Soccer Durability System · CDS Vault

<!-- ============================================================================
     CDS VAULT · PAGE GUARD  (gates this page on paid_all_access)
     Same lock used on every member page. Do not edit per page.
     Goes at the VERY TOP of the page / Custom Liquid block.
============================================================================ -->
<div id="vgate-cover" aria-hidden="true">
  <div class="vgate-mark">CDS <span>Vault</span></div>
  <div class="vgate-msg">Checking your access</div>
  <div class="vgate-bar"><span></span></div>
</div>
<style>
  #vgate-cover{position:fixed;inset:0;z-index:2147483647;background:#060d1a;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;font-family:'Barlow Condensed',system-ui,sans-serif;}
  #vgate-cover .vgate-mark{font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:24px;color:#fff;}
  #vgate-cover .vgate-mark span{color:#b5f23d;}
  #vgate-cover .vgate-msg{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:#9fb0c9;font-weight:700;}
  #vgate-cover .vgate-bar{width:170px;height:5px;background:rgba(255,255,255,.08);border-radius:4px;overflow:hidden;}
  #vgate-cover .vgate-bar span{display:block;height:100%;width:40%;background:#b5f23d;border-radius:4px;animation:vgateLoad 1s ease-in-out infinite;}
  @keyframes vgateLoad{0%{margin-left:-40%}100%{margin-left:100%}}
  html.vgate-ok #vgate-cover{display:none;}
</style>
<script>
(function(){
  var WORKER_URL = 'https://cds-paid-verify.tim-b86.workers.dev';
  var SIGNIN_URL = 'https://cdscommunity.com/pages/vault-signin';
  var SESSION_KEY = 'cds_vault_session';
  try{
    var rb=document.head.querySelector('meta[name="robots"]');
    if(!rb){rb=document.createElement('meta');rb.setAttribute('name','robots');document.head.appendChild(rb);}
    rb.setAttribute('content','noindex, nofollow');
  }catch(e){}
  function reveal(){ document.documentElement.classList.add('vgate-ok'); }
  function bounce(){ try{location.replace(SIGNIN_URL);}catch(e){location.href=SIGNIN_URL;} }
  function readSession(){
    try{
      var raw=sessionStorage.getItem(SESSION_KEY)||localStorage.getItem(SESSION_KEY);
      if(!raw)return null;
      var s=JSON.parse(raw);
      if(!s||!s.email||!s.exp||s.exp<Date.now())return null;
      return s;
    }catch(e){return null;}
  }
  function clearSession(){try{localStorage.removeItem(SESSION_KEY);sessionStorage.removeItem(SESSION_KEY);}catch(e){}}
  var s=readSession();
  if(!s){ bounce(); return; }
  fetch(WORKER_URL,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({email:s.email})})
    .then(function(r){return r.json();})
    .then(function(res){
      if(res && res.access){ reveal(); }
      else { clearSession(); bounce(); }
    })
    .catch(function(){ reveal(); });
})();
</script>
<!-- ===================== END CDS VAULT PAGE GUARD ===================== -->
<style id="cds-ei-css">[class^="cds-ei-"]{display:inline-block;width:1em;height:1em;vertical-align:-0.14em;background-color:currentColor;-webkit-mask:center/contain no-repeat;mask:center/contain no-repeat}.cds-ei-arrowr{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M5%2012h14M13%206l6%206-6%206%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M5%2012h14M13%206l6%206-6%206%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-bolt{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M13%202%204%2014h7l-1%208%209-12h-7z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M13%202%204%2014h7l-1%208%209-12h-7z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-check{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M5%2012l5%205L20%206%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M5%2012l5%205L20%206%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-clipboard{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%278%27%20y%3D%273%27%20width%3D%278%27%20height%3D%274%27%20rx%3D%271%27%2F%3E%3Cpath%20d%3D%27M9%205H6a2%202%200%200%200-2%202v12a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V7a2%202%200%200%200-2-2h-3%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%278%27%20y%3D%273%27%20width%3D%278%27%20height%3D%274%27%20rx%3D%271%27%2F%3E%3Cpath%20d%3D%27M9%205H6a2%202%200%200%200-2%202v12a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V7a2%202%200%200%200-2-2h-3%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-diamond{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%205l7%207-7%207-7-7z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%205l7%207-7%207-7-7z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-flame{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%202c1%203%204%205%204%209a4%204%200%200%201-8%200c0-1.5.5-2.5%201-3.5C9.5%209%209%207.5%2012%202z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%202c1%203%204%205%204%209a4%204%200%200%201-8%200c0-1.5.5-2.5%201-3.5C9.5%209%209%207.5%2012%202z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-foot{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M7%204c2%200%203%202%203%205v5a3%203%200%200%201-6%200c0-3%201-5%203-6M7%209l4-1M7%2013h4%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M7%204c2%200%203%202%203%205v5a3%203%200%200%201-6%200c0-3%201-5%203-6M7%209l4-1M7%2013h4%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-football{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cellipse%20cx%3D%2712%27%20cy%3D%2712%27%20rx%3D%279%27%20ry%3D%276%27%2F%3E%3Cpath%20d%3D%27M8%2012h8M12%209v6%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cellipse%20cx%3D%2712%27%20cy%3D%2712%27%20rx%3D%279%27%20ry%3D%276%27%2F%3E%3Cpath%20d%3D%27M8%2012h8M12%209v6%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-grad{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M2%209l10-5%2010%205-10%205zM6%2011v5c0%201.5%203%203%206%203s6-1.5%206-3v-5%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M2%209l10-5%2010%205-10%205zM6%2011v5c0%201.5%203%203%206%203s6-1.5%206-3v-5%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-leg{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M10%203v8l-2%205%203%205M14%203l-1%209-1%204%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M10%203v8l-2%205%203%205M14%203l-1%209-1%204%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-lock{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%274%27%20y%3D%2711%27%20width%3D%2716%27%20height%3D%2710%27%20rx%3D%272%27%2F%3E%3Cpath%20d%3D%27M8%2011V7a4%204%200%200%201%208%200v4%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%274%27%20y%3D%2711%27%20width%3D%2716%27%20height%3D%2710%27%20rx%3D%272%27%2F%3E%3Cpath%20d%3D%27M8%2011V7a4%204%200%200%201%208%200v4%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-mail{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273%27%20y%3D%275%27%20width%3D%2718%27%20height%3D%2714%27%20rx%3D%272%27%2F%3E%3Cpath%20d%3D%27M3%207l9%206%209-6%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273%27%20y%3D%275%27%20width%3D%2718%27%20height%3D%2714%27%20rx%3D%272%27%2F%3E%3Cpath%20d%3D%27M3%207l9%206%209-6%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-phone{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M22%2016.9v3a2%202%200%200%201-2.2%202A19.8%2019.8%200%200%201%203.1%204.2%202%202%200%200%201%205%202h3a2%202%200%200%201%202%201.7c.1.9.4%201.8.7%202.6a2%202%200%200%201-.5%202.1L8.9%209.9a16%2016%200%200%200%206%206l1.5-1.3a2%202%200%200%201%202.1-.4c.8.3%201.7.6%202.6.7A2%202%200%200%201%2022%2016.9z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M22%2016.9v3a2%202%200%200%201-2.2%202A19.8%2019.8%200%200%201%203.1%204.2%202%202%200%200%201%205%202h3a2%202%200%200%201%202%201.7c.1.9.4%201.8.7%202.6a2%202%200%200%201-.5%202.1L8.9%209.9a16%2016%200%200%200%206%206l1.5-1.3a2%202%200%200%201%202.1-.4c.8.3%201.7.6%202.6.7A2%202%200%200%201%2022%2016.9z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-pin{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021s-6-5.7-6-10a6%206%200%200%201%2012%200c0%204.3-6%2010-6%2010zM12%2011a2%202%200%201%200%200-.01z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021s-6-5.7-6-10a6%206%200%200%201%2012%200c0%204.3-6%2010-6%2010zM12%2011a2%202%200%201%200%200-.01z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-question{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Cpath%20d%3D%27M9.5%209.5a2.5%202.5%200%200%201%204.5%201.5c0%201.7-2.5%202-2.5%204M12%2017h.01%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Cpath%20d%3D%27M9.5%209.5a2.5%202.5%200%200%201%204.5%201.5c0%201.7-2.5%202-2.5%204M12%2017h.01%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-refresh{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M21%2012a9%209%200%201%201-2.6-6.4M21%203v6h-6%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M21%2012a9%209%200%201%201-2.6-6.4M21%203v6h-6%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-scale{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203v18M6%2021h12M5%207h14M5%207l-3%206a3%203%200%200%200%206%200zM19%207l-3%206a3%203%200%200%200%206%200z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203v18M6%2021h12M5%207h14M5%207l-3%206a3%203%200%200%200%206%200zM19%207l-3%206a3%203%200%200%200%206%200z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-shield{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%202%204%205v6c0%205%203.5%208%208%209%204.5-1%208-4%208-9V5z%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%202%204%205v6c0%205%203.5%208%208%209%204.5-1%208-4%208-9V5z%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-spark{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203v4M12%2017v4M3%2012h4M17%2012h4M6%206l2.5%202.5M15.5%2015.5%2018%2018%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203v4M12%2017v4M3%2012h4M17%2012h4M6%206l2.5%202.5M15.5%2015.5%2018%2018%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-sprout{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021v-9M12%2012c0-3-2-5-5-5%200%203%202%205%205%205M12%2012c0-3%202-5%205-5%200%203-2%205-5%205%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021v-9M12%2012c0-3-2-5-5-5%200%203%202%205%205%205M12%2012c0-3%202-5%205-5%200%203-2%205-5%205%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-target{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%271.5%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%275%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%271.5%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-tree{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2016a6%206%200%201%200%200-12%206%206%200%200%200%200%2012zM12%2016v6%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2016a6%206%200%201%200%200-12%206%206%200%200%200%200%2012zM12%2016v6%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-trend{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M3%2017l6-6%204%204%207-7M15%208h5v5%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M3%2017l6-6%204%204%207-7M15%208h5v5%27%2F%3E%3C%2Fsvg%3E")}.cds-ei-trophy{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M8%2021h8M12%2017v4M6%204h12v4a6%206%200%200%201-12%200zM6%206H3v1a3%203%200%200%200%203%203M18%206h3v1a3%203%200%200%200-3%203%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M8%2021h8M12%2017v4M6%204h12v4a6%206%200%200%201-12%200zM6%206H3v1a3%203%200%200%200%203%203M18%206h3v1a3%203%200%200%200-3%203%27%2F%3E%3C%2Fsvg%3E")}</style>

<!-- ============================================================================
     CDS SOCCER DURABILITY SYSTEM
     ============================================================================
     Lead-gated soccer recovery, corrective and injury-reduction program builder.
     Embeds in Shopify Custom Liquid. Captures leads through GHL.

     NAMESPACE: .cds-sds
     GHL FORM: stGjVnBtHz381IwKCJ8m (CDS Soccer Durability System · LIVE)

     BUILT TO CDS LOCKED STANDARDS:
     · Lead-Gated Tool Standard v2.0 (visible GHL iframe + height-shrink detection)
     · Free Tools Visual Theme (cinematic gradient, navy/cobalt/lime)
     · No em dashes, no Oxford comma
     · Coach Tim credential format locked
     · Athlete-led voice, parent-magnetic output

     Shopify Custom Liquid rule: NO meta/OG/twitter/ld+json tags. SEO in Admin.
============================================================================ -->

<style>
@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=Barlow:wght@400;500;600;700&display=swap');

.cds-sds {
  --cds-navy: #060d1a;
  --cds-navy-mid: #0b1628;
  --cds-navy-light: #0f1e3d;
  --cds-navy-2: #0c1730;
  --cds-navy-3: #131e3d;
  --cds-cobalt: #1647e8;
  --cds-cobalt-2: #2a5cf5;
  --cds-lime: #b5f23d;
  --cds-lime-2: #c8ff52;
  --cds-soft-blue: #93c5fd;
  --cds-white: #ffffff;
  --cds-gray-1: #e5e9f0;
  --cds-gray-2: #9aa3b8;
  --cds-gray-3: #4a5470;
  --cds-gray-4: #2a3349;
  --cds-success: #b5f23d;
  --cds-warn: #ffb547;
  --cds-danger: #ff5470;

  font-family: 'Barlow', system-ui, -apple-system, sans-serif;
  color: var(--cds-white);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background:
    radial-gradient(1200px 600px at 85% -5%, rgba(22,71,232,0.20), transparent 60%),
    radial-gradient(900px 500px at 10% 100%, rgba(181,242,61,0.08), transparent 55%),
    linear-gradient(180deg, var(--cds-navy) 0%, var(--cds-navy-mid) 55%, var(--cds-navy) 100%);
  position: relative;
  overflow: hidden;
}

.cds-sds *, .cds-sds *::before, .cds-sds *::after { box-sizing: border-box; }
.cds-sds h1, .cds-sds h2, .cds-sds h3, .cds-sds h4 {
  font-family: 'Barlow Condensed', system-ui, sans-serif;
  font-weight: 800; letter-spacing: 0.01em; line-height: 1.05; margin: 0;
  text-transform: uppercase;
}
.cds-sds p { margin: 0; }
.cds-sds button { font-family: inherit; cursor: pointer; }
.cds-sds input, .cds-sds textarea, .cds-sds select { font-family: inherit; }

.cds-sds .cds-inner { max-width: 1080px; margin: 0 auto; padding: 0 22px; }

/* ==================== HERO ==================== */
.cds-sds .cds-hero { padding: 54px 0 34px; position: relative; }
.cds-sds .cds-hero-grid {
  display: grid; grid-template-columns: 1.35fr 1fr; gap: 40px; align-items: center;
}
.cds-sds .cds-eyebrow {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: 'Barlow Condensed', sans-serif; font-size: 13px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--cds-lime);
  background: rgba(181,242,61,0.07); border: 1px solid rgba(181,242,61,0.22);
  padding: 7px 15px; border-radius: 20px; margin-bottom: 20px;
}
.cds-sds .cds-eyebrow-dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--cds-lime);
  box-shadow: 0 0 12px var(--cds-lime); animation: cds-pulse 2s infinite;
}
@keyframes cds-pulse { 0%,100%{opacity:1;} 50%{opacity:0.4;} }
.cds-sds .cds-hero-title { font-size: 56px; margin-bottom: 18px; }
.cds-sds .cds-hero-title-top { display: block; color: var(--cds-white); }
.cds-sds .cds-accent { color: var(--cds-lime); }
.cds-sds .cds-hero-sub {
  font-size: 17px; color: var(--cds-gray-1); line-height: 1.6; max-width: 540px;
  margin-bottom: 24px;
}
.cds-sds .cds-hero-promise { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; max-width: 540px; }
.cds-sds .cds-promise-item {
  display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 600;
  color: var(--cds-gray-1); background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07); border-left: 2px solid var(--cds-lime);
  padding: 11px 13px; border-radius: 8px;
}
.cds-sds .cds-promise-icon { font-size: 18px; flex-shrink: 0; }

/* ==================== COACH TIM CARD ==================== */
.cds-sds .cds-coach-card {
  position: relative; padding: 36px 28px 28px;
  background: linear-gradient(135deg, rgba(22,71,232,0.18), rgba(181,242,61,0.06));
  border: 1px solid rgba(181,242,61,0.25); border-radius: 14px;
  backdrop-filter: blur(10px); text-align: center;
  box-shadow: 0 20px 60px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.06);
}
.cds-sds .cds-coach-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--cds-cobalt), var(--cds-lime));
  border-radius: 14px 14px 0 0;
}
.cds-sds .cds-coach-badge {
  position: absolute; top: -14px; left: 50%; transform: translateX(-50%);
  background: var(--cds-lime); color: var(--cds-navy); padding: 6px 16px;
  border-radius: 20px; font-family: 'Barlow Condensed', sans-serif; font-size: 11px;
  font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em; white-space: nowrap;
  box-shadow: 0 4px 16px rgba(181,242,61,0.35);
}
.cds-sds .cds-coach-photo {
  width: 120px; height: 120px; border-radius: 50%; margin: 8px auto 16px; display: block;
  border: 3px solid var(--cds-lime); object-fit: cover;
  box-shadow: 0 0 50px rgba(181,242,61,0.35), 0 0 0 6px rgba(181,242,61,0.08);
}
.cds-sds .cds-coach-name {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; text-transform: uppercase;
  font-size: 24px; margin-bottom: 6px; color: var(--cds-white);
}
.cds-sds .cds-coach-title {
  font-family: 'Barlow Condensed', sans-serif; font-size: 12px; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--cds-gray-1); font-weight: 600; line-height: 1.6;
  margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid rgba(255,255,255,0.08);
}
.cds-sds .cds-coach-creds { display: grid; gap: 10px; margin-bottom: 20px; text-align: left; }
.cds-sds .cds-cred-row {
  display: flex; align-items: center; gap: 12px; padding: 9px 12px;
  background: rgba(255,255,255,0.03); border-radius: 8px; border-left: 2px solid var(--cds-lime);
}
.cds-sds .cds-cred-icon { font-size: 20px; flex-shrink: 0; filter: drop-shadow(0 0 6px rgba(181,242,61,0.3)); }
.cds-sds .cds-cred-text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.cds-sds .cds-cred-text strong {
  font-family: 'Barlow Condensed', sans-serif; font-size: 13px; font-weight: 700;
  color: var(--cds-white); text-transform: uppercase; letter-spacing: 0.04em; line-height: 1.2;
}
.cds-sds .cds-cred-text span { font-size: 11px; color: var(--cds-gray-2); font-weight: 500; line-height: 1.3; }
.cds-sds .cds-coach-quote {
  font-style: italic; font-size: 13px; color: var(--cds-lime); line-height: 1.5;
  padding: 13px 15px; background: rgba(181,242,61,0.06); border-radius: 8px;
  border: 1px solid rgba(181,242,61,0.15); font-weight: 500;
}
</style>

<style>
/* ==================== FORM SECTION ==================== */
.cds-sds .cds-form-section { padding: 18px 0 60px; }
.cds-sds .cds-form-card {
  background: linear-gradient(135deg, var(--cds-navy-2), var(--cds-navy-light));
  border: 1px solid rgba(255,255,255,0.08); border-radius: 18px;
  padding: 36px 34px; box-shadow: 0 24px 70px rgba(0,0,0,0.45);
  position: relative; overflow: hidden;
}
.cds-sds .cds-form-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--cds-cobalt), var(--cds-lime));
}
.cds-sds .cds-progress { display: flex; align-items: center; gap: 8px; margin-bottom: 28px; flex-wrap: wrap; }
.cds-sds .cds-step-dot {
  width: 30px; height: 5px; border-radius: 3px; background: var(--cds-gray-4); transition: all 0.3s;
}
.cds-sds .cds-step-dot.active { background: var(--cds-lime); box-shadow: 0 0 12px rgba(181,242,61,0.5); }
.cds-sds .cds-step-dot.done { background: var(--cds-cobalt); }
.cds-sds .cds-progress-label {
  margin-left: auto; font-family: 'Barlow Condensed', sans-serif; font-size: 13px;
  font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--cds-gray-2);
}
.cds-sds .cds-step { display: none; animation: cds-fade 0.4s ease; }
.cds-sds .cds-step.active { display: block; }
@keyframes cds-fade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.cds-sds .cds-step-num {
  font-family: 'Barlow Condensed', sans-serif; font-size: 13px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--cds-lime); margin-bottom: 8px;
}
.cds-sds .cds-step-title { font-size: 30px; color: var(--cds-white); margin-bottom: 8px; }
.cds-sds .cds-step-sub { font-size: 15px; color: var(--cds-gray-2); margin-bottom: 24px; line-height: 1.55; }

.cds-sds .cds-hint {
  background: rgba(22,71,232,0.08); border: 1px solid rgba(22,71,232,0.3);
  border-left: 3px solid var(--cds-cobalt); border-radius: 8px; padding: 12px 14px;
  font-size: 13px; color: var(--cds-soft-blue); margin-bottom: 22px; line-height: 1.5;
}
.cds-sds .cds-hint strong { color: var(--cds-white); }

/* Choice pills + grid cards */
.cds-sds .cds-choice-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 8px; }
.cds-sds .cds-choice {
  background: var(--cds-navy-3); border: 1.5px solid var(--cds-gray-4); border-radius: 12px;
  padding: 16px 14px; text-align: center; transition: all 0.2s; cursor: pointer; position: relative;
}
.cds-sds .cds-choice:hover { border-color: var(--cds-cobalt); transform: translateY(-2px); }
.cds-sds .cds-choice.selected {
  border-color: var(--cds-lime); background: linear-gradient(135deg, rgba(181,242,61,0.12), rgba(22,71,232,0.08));
  box-shadow: 0 0 0 3px rgba(181,242,61,0.12);
}
.cds-sds .cds-choice.selected::after {
  content: "✓"; position: absolute; top: 8px; right: 10px; color: var(--cds-lime);
  font-weight: 800; font-size: 14px;
}
.cds-sds .cds-choice-icon { font-size: 28px; display: block; margin-bottom: 8px; }
.cds-sds .cds-choice-label {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase;
  font-size: 15px; letter-spacing: 0.03em; color: var(--cds-white); line-height: 1.15;
}
.cds-sds .cds-choice-note { font-size: 11px; color: var(--cds-gray-2); margin-top: 4px; line-height: 1.3; }

/* Limitation multi-select rows */
.cds-sds .cds-limit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cds-sds .cds-limit {
  display: flex; align-items: center; gap: 13px; background: var(--cds-navy-3);
  border: 1.5px solid var(--cds-gray-4); border-radius: 12px; padding: 14px 15px;
  transition: all 0.2s; cursor: pointer;
}
.cds-sds .cds-limit:hover { border-color: var(--cds-cobalt); }
.cds-sds .cds-limit.selected {
  border-color: var(--cds-lime); background: linear-gradient(135deg, rgba(181,242,61,0.1), rgba(22,71,232,0.06));
}
.cds-sds .cds-limit-check {
  width: 22px; height: 22px; border-radius: 6px; border: 2px solid var(--cds-gray-3);
  flex-shrink: 0; display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 13px; color: var(--cds-navy); transition: all 0.2s;
}
.cds-sds .cds-limit.selected .cds-limit-check { background: var(--cds-lime); border-color: var(--cds-lime); }
.cds-sds .cds-limit-body { flex: 1; min-width: 0; }
.cds-sds .cds-limit-title {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase;
  font-size: 15px; color: var(--cds-white); line-height: 1.15;
}
.cds-sds .cds-limit-desc { font-size: 11.5px; color: var(--cds-gray-2); line-height: 1.35; margin-top: 2px; }

/* Text + number inputs */
.cds-sds .cds-field { margin-bottom: 18px; }
.cds-sds .cds-field-label {
  display: block; font-family: 'Barlow Condensed', sans-serif; font-size: 14px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.06em; color: var(--cds-gray-1); margin-bottom: 7px;
}
.cds-sds .cds-input, .cds-sds .cds-select {
  width: 100%; background: var(--cds-navy-3); border: 1.5px solid var(--cds-gray-4);
  border-radius: 10px; padding: 13px 15px; color: var(--cds-white); font-size: 15px; transition: all 0.2s;
}
.cds-sds .cds-input:focus, .cds-sds .cds-select:focus { outline: none; border-color: var(--cds-lime); }
.cds-sds .cds-input::placeholder { color: var(--cds-gray-3); }
.cds-sds .cds-select { appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%239aa3b8' d='M6 8L0 0h12z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 15px center; padding-right: 38px;
}
.cds-sds .cds-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }

.cds-sds .cds-error {
  display: none; color: var(--cds-danger); font-size: 13px; font-weight: 600; margin: 12px 0 0;
  padding: 10px 13px; background: rgba(255,84,112,0.08); border: 1px solid rgba(255,84,112,0.3);
  border-radius: 8px;
}
.cds-sds .cds-error.show { display: block; }

.cds-sds .cds-btn-row {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  margin-top: 28px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,0.07);
}
.cds-sds .cds-btn {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.06em; font-size: 16px; padding: 13px 28px; border-radius: 10px;
  border: none; transition: all 0.2s;
}
.cds-sds .cds-btn-primary {
  background: var(--cds-lime); color: var(--cds-navy);
  box-shadow: 0 8px 24px rgba(181,242,61,0.28);
}
.cds-sds .cds-btn-primary:hover { background: var(--cds-lime-2); transform: translateY(-2px); }
.cds-sds .cds-btn-secondary { background: rgba(255,255,255,0.06); color: var(--cds-gray-1); border: 1px solid var(--cds-gray-4); }
.cds-sds .cds-btn-secondary:hover { background: rgba(255,255,255,0.1); }

/* GHL form wrap */
.cds-sds .cds-ghl-form-wrap {
  background: #ffffff; border-radius: 12px; padding: 6px; margin-bottom: 6px;
  box-shadow: 0 10px 40px rgba(0,0,0,0.3);
}
.cds-sds .cds-gate-trust { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin: 18px 0 4px; }
.cds-sds .cds-trust-pill {
  font-size: 11.5px; font-weight: 600; color: var(--cds-gray-1);
  background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.09);
  padding: 6px 12px; border-radius: 16px;
}

/* ==================== LOADING ==================== */
.cds-sds .cds-loading { display: none; text-align: center; padding: 50px 20px; }
.cds-sds .cds-loading.show { display: block; }
.cds-sds .cds-loading-ring { margin: 0 auto 24px; width: 100px; height: 100px; }
.cds-sds .cds-loading-ring circle:last-child { animation: cds-spin 1.2s linear infinite; transform-origin: 50% 50%; }
@keyframes cds-spin { to { transform: rotate(270deg); } }
.cds-sds .cds-loading-title { font-size: 28px; color: var(--cds-white); margin-bottom: 10px; }
.cds-sds .cds-loading-msg { font-size: 15px; color: var(--cds-lime); font-weight: 600; margin-bottom: 26px; min-height: 22px; }
.cds-sds .cds-loading-bars { max-width: 420px; margin: 0 auto; display: grid; gap: 10px; text-align: left; }
.cds-sds .cds-load-row {
  display: flex; align-items: center; gap: 12px; font-size: 14px; color: var(--cds-gray-2);
  opacity: 0.4; transition: opacity 0.4s;
}
.cds-sds .cds-load-row.done { opacity: 1; color: var(--cds-gray-1); }
.cds-sds .cds-load-check {
  width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--cds-gray-4);
  display: flex; align-items: center; justify-content: center; font-size: 12px; flex-shrink: 0;
}
.cds-sds .cds-load-row.done .cds-load-check { background: var(--cds-lime); border-color: var(--cds-lime); color: var(--cds-navy); font-weight: 800; }

/* ==================== RESULTS ==================== */
.cds-sds .cds-results { display: none; padding: 30px 0 0; }
.cds-sds .cds-results.show { display: block; animation: cds-fade 0.5s ease; }
.cds-sds .cds-report-header { text-align: center; margin-bottom: 36px; }
.cds-sds .cds-report-eyebrow {
  font-family: 'Barlow Condensed', sans-serif; font-size: 14px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--cds-lime); margin-bottom: 10px;
}
.cds-sds .cds-report-title { font-size: 44px; color: var(--cds-white); margin-bottom: 12px; }
.cds-sds .cds-report-meta { font-size: 15px; color: var(--cds-gray-2); }
.cds-sds .cds-report-meta strong { color: var(--cds-soft-blue); }

.cds-sds .cds-action-bar { display: flex; gap: 12px; justify-content: center; margin-top: 24px; }
.cds-sds .cds-action-btn {
  display: inline-flex; align-items: center; gap: 8px; font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; font-size: 14px;
  padding: 11px 20px; border-radius: 10px; border: 1px solid var(--cds-gray-4);
  background: rgba(255,255,255,0.05); color: var(--cds-gray-1); transition: all 0.2s;
}
.cds-sds .cds-action-btn:hover { background: rgba(255,255,255,0.1); }
.cds-sds .cds-action-btn-primary { background: var(--cds-lime); color: var(--cds-navy); border-color: var(--cds-lime); }
.cds-sds .cds-action-btn-primary:hover { background: var(--cds-lime-2); }

.cds-sds .cds-section {
  background: linear-gradient(135deg, var(--cds-navy-2), var(--cds-navy-light));
  border: 1px solid rgba(255,255,255,0.08); border-radius: 16px; padding: 30px 30px;
  margin-bottom: 22px; box-shadow: 0 16px 50px rgba(0,0,0,0.35); position: relative; overflow: hidden;
}
.cds-sds .cds-section-eyebrow {
  font-family: 'Barlow Condensed', sans-serif; font-size: 13px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--cds-cobalt-2); margin-bottom: 6px;
}
.cds-sds .cds-section-title { font-size: 28px; color: var(--cds-white); margin-bottom: 16px; }
.cds-sds .cds-section p { font-size: 15px; color: var(--cds-gray-1); line-height: 1.62; margin-bottom: 12px; }

/* Risk dial */
.cds-sds .cds-risk-wrap { display: grid; grid-template-columns: 160px 1fr; gap: 26px; align-items: center; }
.cds-sds .cds-risk-dial { position: relative; width: 160px; height: 160px; margin: 0 auto; }
.cds-sds .cds-risk-num {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); text-align: center;
}
.cds-sds .cds-risk-score { font-family: 'Barlow Condensed', sans-serif; font-size: 46px; font-weight: 800; line-height: 1; }
.cds-sds .cds-risk-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--cds-gray-2); margin-top: 2px; }
.cds-sds .cds-risk-tier {
  display: inline-block; font-family: 'Barlow Condensed', sans-serif; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.06em; font-size: 18px; padding: 6px 16px;
  border-radius: 8px; margin-bottom: 12px;
}
.cds-sds .cds-tier-low { background: rgba(181,242,61,0.15); color: var(--cds-lime); border: 1px solid rgba(181,242,61,0.4); }
.cds-sds .cds-tier-mod { background: rgba(255,181,71,0.15); color: var(--cds-warn); border: 1px solid rgba(255,181,71,0.4); }
.cds-sds .cds-tier-high { background: rgba(255,84,112,0.15); color: var(--cds-danger); border: 1px solid rgba(255,84,112,0.4); }

/* Focus area cards */
.cds-sds .cds-focus-card {
  background: var(--cds-navy-3); border: 1px solid rgba(255,255,255,0.07);
  border-left: 3px solid var(--cds-lime); border-radius: 12px; padding: 20px 22px; margin-bottom: 16px;
}
.cds-sds .cds-focus-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.cds-sds .cds-focus-icon {
  width: 44px; height: 44px; border-radius: 10px; background: rgba(181,242,61,0.12);
  display: flex; align-items: center; justify-content: center; font-size: 24px; flex-shrink: 0;
}
.cds-sds .cds-focus-name { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; font-size: 19px; color: var(--cds-white); }
.cds-sds .cds-focus-why { font-size: 12px; color: var(--cds-cobalt-2); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }

/* Exercise rows */
.cds-sds .cds-ex-list { display: grid; gap: 10px; margin-top: 14px; }
.cds-sds .cds-ex {
  display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center;
  background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06);
  border-radius: 9px; padding: 12px 15px;
}
.cds-sds .cds-ex-name { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 16px; color: var(--cds-white); text-transform: uppercase; letter-spacing: 0.02em; }
.cds-sds .cds-ex-cue { font-size: 12.5px; color: var(--cds-gray-2); line-height: 1.4; margin-top: 2px; }
.cds-sds .cds-ex-dose {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 14px; color: var(--cds-lime);
  background: rgba(181,242,61,0.1); border: 1px solid rgba(181,242,61,0.25); border-radius: 7px;
  padding: 7px 12px; text-align: center; white-space: nowrap; min-width: 90px;
}

/* Weekly schedule */
.cds-sds .cds-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; margin-top: 14px; }
.cds-sds .cds-day {
  background: var(--cds-navy-3); border: 1px solid rgba(255,255,255,0.07); border-radius: 10px;
  padding: 12px 8px; text-align: center; min-height: 110px;
}
.cds-sds .cds-day-name { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 13px; color: var(--cds-soft-blue); text-transform: uppercase; margin-bottom: 8px; letter-spacing: 0.04em; }
.cds-sds .cds-day-focus { font-size: 11.5px; color: var(--cds-gray-1); line-height: 1.35; font-weight: 600; }
.cds-sds .cds-day-tag { display: inline-block; font-size: 9px; text-transform: uppercase; letter-spacing: 0.06em; padding: 2px 6px; border-radius: 5px; margin-top: 6px; font-weight: 700; }
.cds-sds .cds-tag-train { background: rgba(22,71,232,0.2); color: var(--cds-soft-blue); }
.cds-sds .cds-tag-recover { background: rgba(181,242,61,0.15); color: var(--cds-lime); }
.cds-sds .cds-tag-rest { background: rgba(255,255,255,0.06); color: var(--cds-gray-2); }

/* Callout */
.cds-sds .cds-callout {
  background: linear-gradient(135deg, rgba(181,242,61,0.1), rgba(22,71,232,0.05));
  border: 1px solid rgba(181,242,61,0.25); border-left: 3px solid var(--cds-lime);
  border-radius: 12px; padding: 18px 20px; margin: 16px 0;
}
.cds-sds .cds-callout-label { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; font-size: 12px; color: var(--cds-lime); margin-bottom: 6px; }

/* Coach note */
.cds-sds .cds-coach-note {
  display: grid; grid-template-columns: 80px 1fr; gap: 18px; align-items: start;
  background: var(--cds-navy-3); border-radius: 12px; padding: 22px; border: 1px solid rgba(255,255,255,0.07);
}
.cds-sds .cds-coach-note img { width: 80px; height: 80px; border-radius: 50%; border: 2px solid var(--cds-lime); object-fit: cover; }
.cds-sds .cds-coach-note p { font-style: italic; color: var(--cds-gray-1); font-size: 15px; line-height: 1.6; }
.cds-sds .cds-coach-sig { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; color: var(--cds-lime); font-size: 15px; margin-top: 10px; font-style: normal; }

/* Cross-sell */
.cds-sds .cds-crosssell { padding: 40px 0 10px; }
.cds-sds .cds-crosssell-header { text-align: center; margin-bottom: 26px; }
.cds-sds .cds-crosssell-eyebrow { font-family: 'Barlow Condensed', sans-serif; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.16em; color: var(--cds-lime); margin-bottom: 8px; }
.cds-sds .cds-crosssell-title { font-size: 32px; color: var(--cds-white); margin-bottom: 6px; }
.cds-sds .cds-crosssell-sub { font-size: 15px; color: var(--cds-gray-2); }
.cds-sds .cds-crosssell-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.cds-sds .cds-crosssell-card {
  display: block; text-decoration: none; background: linear-gradient(135deg, var(--cds-navy-2), var(--cds-navy-light));
  border: 1px solid rgba(255,255,255,0.08); border-radius: 14px; padding: 24px 22px; transition: all 0.25s;
}
.cds-sds .cds-crosssell-card:hover { transform: translateY(-4px); border-color: rgba(181,242,61,0.4); box-shadow: 0 18px 50px rgba(0,0,0,0.4); }
.cds-sds .cds-crosssell-tag { display: inline-block; font-size: 12px; font-weight: 700; color: var(--cds-lime); margin-bottom: 12px; }
.cds-sds .cds-crosssell-headline { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; font-size: 19px; color: var(--cds-white); line-height: 1.15; margin-bottom: 10px; }
.cds-sds .cds-crosssell-text { font-size: 13.5px; color: var(--cds-gray-2); line-height: 1.5; margin-bottom: 14px; }
.cds-sds .cds-crosssell-cta { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cds-lime); font-size: 14px; }

/* Footer */
.cds-sds .cds-footer { padding: 40px 0; text-align: center; border-top: 1px solid rgba(255,255,255,0.07); margin-top: 30px; }
.cds-sds .cds-footer-brand { font-family: 'Barlow Condensed', sans-serif; font-weight: 800; text-transform: uppercase; font-size: 26px; color: var(--cds-white); margin-bottom: 8px; }
.cds-sds .cds-footer-coach { font-size: 13px; color: var(--cds-gray-2); margin-bottom: 16px; }
.cds-sds .cds-footer-contact { display: flex; gap: 18px; justify-content: center; flex-wrap: wrap; margin-bottom: 20px; }
.cds-sds .cds-footer-contact a, .cds-sds .cds-footer-contact span { font-size: 13px; color: var(--cds-gray-1); text-decoration: none; }
.cds-sds .cds-footer-contact a:hover { color: var(--cds-lime); }
.cds-sds .cds-restart {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.06em; font-size: 14px; padding: 11px 24px; border-radius: 10px;
  background: rgba(255,255,255,0.06); border: 1px solid var(--cds-gray-4); color: var(--cds-gray-1);
}
.cds-sds .cds-restart:hover { background: rgba(255,255,255,0.1); }
.cds-sds .cds-footer-legal { font-size: 12px; color: var(--cds-gray-3); }

/* Mobile */
@media (max-width: 1024px) {
  .cds-sds .cds-hero-grid { grid-template-columns: 1fr; gap: 28px; }
  .cds-sds .cds-hero-title { font-size: 42px; }
  .cds-sds .cds-coach-card { max-width: 420px; margin: 0 auto; }
  .cds-sds .cds-crosssell-grid { grid-template-columns: 1fr; }
  .cds-sds .cds-risk-wrap { grid-template-columns: 1fr; }
  .cds-sds .cds-week { grid-template-columns: repeat(3, 1fr); }
  .cds-sds .cds-limit-grid { grid-template-columns: 1fr; }
  .cds-sds .cds-field-row { grid-template-columns: 1fr; }
  .cds-sds .cds-report-title { font-size: 34px; }
}
@media (max-width: 560px) {
  .cds-sds .cds-form-card { padding: 24px 18px; }
  .cds-sds .cds-hero-promise { grid-template-columns: 1fr; }
  .cds-sds .cds-week { grid-template-columns: repeat(2, 1fr); }
  .cds-sds .cds-ex { grid-template-columns: 1fr; }
  .cds-sds .cds-coach-note { grid-template-columns: 1fr; text-align: center; justify-items: center; }
}

/* ==================== PRINT ==================== */
@media print {
  body * { visibility: hidden; }
  .cds-sds .cds-results, .cds-sds .cds-results * { visibility: visible; }
  .cds-sds .cds-results { position: absolute; left: 0; top: 0; width: 100%; background: #fff !important; color: #000 !important; }
  .cds-sds { background: #fff !important; }
  .cds-sds .cds-action-bar, .cds-sds .cds-crosssell, .cds-sds .cds-footer, .cds-sds .cds-restart { display: none !important; }
  .cds-sds .cds-section, .cds-sds .cds-focus-card, .cds-sds .cds-ex, .cds-sds .cds-day, .cds-sds .cds-coach-note {
    background: #fff !important; border: 1px solid #ccc !important; page-break-inside: avoid; box-shadow: none !important;
  }
  .cds-sds .cds-section-title, .cds-sds .cds-report-title, .cds-sds .cds-focus-name, .cds-sds .cds-ex-name, .cds-sds h1, .cds-sds h2, .cds-sds h3 { color: #060d1a !important; }
  .cds-sds .cds-section-eyebrow, .cds-sds .cds-report-eyebrow, .cds-sds .cds-callout-label, .cds-sds .cds-focus-why { color: #1647e8 !important; }
  .cds-sds p, .cds-sds span, .cds-sds .cds-ex-cue, .cds-sds .cds-day-focus { color: #333 !important; }
  .cds-sds .cds-callout { background: #f0f8e8 !important; border-left: 3px solid #b5f23d !important; color: #060d1a !important; }
  .cds-sds .cds-ex-dose { color: #2d8f2d !important; background: #f0f8e8 !important; }
  .cds-sds .cds-report-meta strong { color: #1647e8 !important; }
  @page { margin: 0.5in; }
}
</style>

<div class="cds-sds" id="cds-sds-root">

  <!-- ==================== HERO ==================== -->
  <section class="cds-hero">
    <div class="cds-inner">
      <div class="cds-hero-grid">
        <div>
          <div class="cds-eyebrow">
            <span class="cds-eyebrow-dot"></span>
            Inside Access · Soccer Durability System
          </div>
          <h1 class="cds-hero-title">
            <span class="cds-hero-title-top">Build A Body That</span>
            <span class="cds-accent">Survives The Season</span>
          </h1>
          <p class="cds-hero-sub">
            Year round soccer breaks down knees, hips and growing bodies. This builds you a
            personalized durability program around your exact limitation. Recovery, corrective
            work and injury reduction built by a pro. Takes about 90 seconds.
          </p>
          <div class="cds-hero-promise">
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-shield></span></span> Non-contact ACL risk score</div>
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-target></span></span> Built around your limitation</div>
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-leg></span></span> Growth-spurt aware program</div>
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-clipboard></span></span> Full weekly plan to keep</div>
          </div>
        </div>

        <div class="cds-coach-card">
          <div class="cds-coach-badge">Built By A Pro</div>
          <img class="cds-coach-photo" src="https://cdn.shopify.com/s/files/1/1462/5190/files/IMG_4425_3_240x240.jpg?v=1759811592" alt="Coach Tim Buckley" />
          <div class="cds-coach-name">Coach Tim Buckley</div>
          <div class="cds-coach-title">
            Former NFL Player · Atlanta Falcons<br>
            Performance Specialist · CDS Founder
          </div>
          <div class="cds-coach-creds">
            <div class="cds-cred-row">
              <span class="cds-cred-icon"><span class=cds-ei-football></span></span>
              <div class="cds-cred-text"><strong>Former NFL Player</strong><span>Atlanta Falcons</span></div>
            </div>
            <div class="cds-cred-row">
              <span class="cds-cred-icon"><span class=cds-ei-grad></span></span>
              <div class="cds-cred-text"><strong>B.S. Biology · Alcorn State</strong><span>Performance Science Foundation</span></div>
            </div>
            <div class="cds-cred-row">
              <span class="cds-cred-icon"><span class=cds-ei-flame></span></span>
              <div class="cds-cred-text"><strong>Thousands Of Athletes Trained</strong><span>Youth · High School · Pro</span></div>
            </div>
            <div class="cds-cred-row">
              <span class="cds-cred-icon"><span class=cds-ei-target></span></span>
              <div class="cds-cred-text"><strong>12+ Years Coaching</strong><span>Performance · Strength · Speed</span></div>
            </div>
          </div>
          <div class="cds-coach-quote">"I trained at the highest level. Now I build athletes who do the same."</div>
        </div>
      </div>
    </div>
  </section>

  <!-- ==================== FORM ==================== -->
  <section class="cds-form-section">
    <div class="cds-inner">
      <div class="cds-form-card" id="cds-form-card">

        <div class="cds-progress">
          <div class="cds-step-dot active" data-dot="1"></div>
          <div class="cds-step-dot" data-dot="2"></div>
          <div class="cds-step-dot" data-dot="3"></div>
          <div class="cds-step-dot" data-dot="4"></div>
          <div class="cds-step-dot" data-dot="5"></div>
          <div class="cds-step-dot" data-dot="6"></div>
          <span class="cds-progress-label" id="cds-progress-label">Step 1 of 6</span>
        </div>

        <!-- STEP 1 · Age band -->
        <div class="cds-step active" data-step="1">
          <div class="cds-step-num">Step 01 · The Athlete</div>
          <h2 class="cds-step-title">How old is the athlete?</h2>
          <p class="cds-step-sub">Age changes everything. A growing body and a recruit need different work.</p>
          <div class="cds-choice-grid" data-single="age">
            <div class="cds-choice" data-val="8-10"><span class="cds-choice-icon"><span class=cds-ei-sprout></span></span><span class="cds-choice-label">8 to 10</span><div class="cds-choice-note">Foundation years</div></div>
            <div class="cds-choice" data-val="11-13"><span class="cds-choice-icon"><span class=cds-ei-sprout></span></span><span class="cds-choice-label">11 to 13</span><div class="cds-choice-note">Growth window</div></div>
            <div class="cds-choice" data-val="14-15"><span class="cds-choice-icon"><span class=cds-ei-tree></span></span><span class="cds-choice-label">14 to 15</span><div class="cds-choice-note">Building base</div></div>
            <div class="cds-choice" data-val="16-18"><span class="cds-choice-icon"><span class=cds-ei-trophy></span></span><span class="cds-choice-label">16 to 18</span><div class="cds-choice-note">Recruit window</div></div>
          </div>
          <div class="cds-error" id="cds-err-1">Pick an age range to continue.</div>
          <div class="cds-btn-row"><span></span><button class="cds-btn cds-btn-primary" data-action="next" data-from="1">Continue →</button></div>
        </div>

        <!-- STEP 2 · Growth status -->
        <div class="cds-step" data-step="2">
          <div class="cds-step-num">Step 02 · Growth Check</div>
          <h2 class="cds-step-title">Going through a growth spurt?</h2>
          <p class="cds-step-sub">Fast growth is when knees and shins are most vulnerable. This is the Osgood-Schlatter and Sever's window.</p>
          <div class="cds-hint"><span class=cds-ei-pin></span> <strong>Why this matters:</strong> During a growth spurt bones grow faster than tendons can keep up. That tension at the knee and heel is the source of most growing-athlete pain. We program around it, we do not push through it.</div>
          <div class="cds-choice-grid" data-single="growth">
            <div class="cds-choice" data-val="active"><span class="cds-choice-icon"><span class=cds-ei-trend></span></span><span class="cds-choice-label">Growing fast</span><div class="cds-choice-note">Recent height jump</div></div>
            <div class="cds-choice" data-val="some"><span class="cds-choice-icon"><span class=cds-ei-arrowr></span></span><span class="cds-choice-label">Some growth</span><div class="cds-choice-note">Steady changes</div></div>
            <div class="cds-choice" data-val="none"><span class="cds-choice-icon">⏸</span><span class="cds-choice-label">Not really</span><div class="cds-choice-note">Stable lately</div></div>
            <div class="cds-choice" data-val="unsure"><span class="cds-choice-icon"><span class=cds-ei-question></span></span><span class="cds-choice-label">Not sure</span><div class="cds-choice-note">Hard to tell</div></div>
          </div>
          <div class="cds-error" id="cds-err-2">Pick one to continue.</div>
          <div class="cds-btn-row"><button class="cds-btn cds-btn-secondary" data-action="back" data-from="2">← Back</button><button class="cds-btn cds-btn-primary" data-action="next" data-from="2">Continue →</button></div>
        </div>

        <!-- STEP 3 · Load -->
        <div class="cds-step" data-step="3">
          <div class="cds-step-num">Step 03 · The Load</div>
          <h2 class="cds-step-title">How much soccer per week?</h2>
          <p class="cds-step-sub">Total soccer load drives injury risk more than anything else. Be honest, count it all.</p>
          <div class="cds-field">
            <label class="cds-field-label">Practices + games + private touches per week</label>
            <select class="cds-select" id="cds-load-sessions">
              <option value="">Select sessions per week</option>
              <option value="low">1 to 3 sessions</option>
              <option value="mod">4 to 5 sessions</option>
              <option value="high">6 to 7 sessions</option>
              <option value="extreme">8+ sessions</option>
            </select>
          </div>
          <div class="cds-field">
            <label class="cds-field-label">Plays on more than one team at once?</label>
            <select class="cds-select" id="cds-load-multi">
              <option value="">Select one</option>
              <option value="no">One team</option>
              <option value="yes">Two or more teams (club + school + select)</option>
            </select>
          </div>
          <div class="cds-field">
            <label class="cds-field-label">Any real off-season or rest block?</label>
            <select class="cds-select" id="cds-load-rest">
              <option value="">Select one</option>
              <option value="yes">Yes, takes breaks</option>
              <option value="some">A little down time</option>
              <option value="no">No, year round nonstop</option>
            </select>
          </div>
          <div class="cds-error" id="cds-err-3">Answer all three to continue.</div>
          <div class="cds-btn-row"><button class="cds-btn cds-btn-secondary" data-action="back" data-from="3">← Back</button><button class="cds-btn cds-btn-primary" data-action="next" data-from="3">Continue →</button></div>
        </div>

        <!-- STEP 4 · Limitations -->
        <div class="cds-step" data-step="4">
          <div class="cds-step-num">Step 04 · The Limitation</div>
          <h2 class="cds-step-title">What are you worried about?</h2>
          <p class="cds-step-sub">Pick everything that applies. This is what we build the program around.</p>
          <div class="cds-limit-grid" data-multi="limits">
            <div class="cds-limit" data-val="core"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Core strength</div><div class="cds-limit-desc">Trunk control, gives out late in games</div></div></div>
            <div class="cds-limit" data-val="hips"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Hip strength</div><div class="cds-limit-desc">Glutes, hip drive, change of direction</div></div></div>
            <div class="cds-limit" data-val="stability"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Single-leg stability</div><div class="cds-limit-desc">Balance, wobbly landings, cutting</div></div></div>
            <div class="cds-limit" data-val="tspine"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Thoracic rotation</div><div class="cds-limit-desc">Upper-back turn, striking, shielding</div></div></div>
            <div class="cds-limit" data-val="knee"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Knee tracking</div><div class="cds-limit-desc">Knees cave in, ACL worry, landing</div></div></div>
            <div class="cds-limit" data-val="hamquad"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Hamstring / quad balance</div><div class="cds-limit-desc">Sprint strain, tight quads, pulls</div></div></div>
            <div class="cds-limit" data-val="ankle"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Ankle strength</div><div class="cds-limit-desc">Rolls easily, weak push off</div></div></div>
            <div class="cds-limit" data-val="recovery"><div class="cds-limit-check">✓</div><div class="cds-limit-body"><div class="cds-limit-title">Recovery / soreness</div><div class="cds-limit-desc">Sore for days, slow to bounce back</div></div></div>
          </div>
          <div class="cds-error" id="cds-err-4">Pick at least one focus area.</div>
          <div class="cds-btn-row"><button class="cds-btn cds-btn-secondary" data-action="back" data-from="4">← Back</button><button class="cds-btn cds-btn-primary" data-action="next" data-from="4">Continue →</button></div>
        </div>

        <!-- STEP 5 · Current pain / history -->
        <div class="cds-step" data-step="5">
          <div class="cds-step-num">Step 05 · The History</div>
          <h2 class="cds-step-title">Any current pain or past injury?</h2>
          <p class="cds-step-sub">This tells us what to be careful with. Pick the closest match.</p>
          <div class="cds-hint"><span class=cds-ei-diamond></span> This tool builds durability and corrective work. It is not medical advice. Sharp pain, swelling or a knee that gives out needs a doctor first.</div>
          <div class="cds-field">
            <label class="cds-field-label">Knee or shin pain right now?</label>
            <select class="cds-select" id="cds-pain-knee">
              <option value="">Select one</option>
              <option value="none">No pain</option>
              <option value="mild">Mild, comes and goes</option>
              <option value="regular">Regular ache after play</option>
            </select>
          </div>
          <div class="cds-field">
            <label class="cds-field-label">Any past injury we should respect?</label>
            <select class="cds-select" id="cds-pain-history">
              <option value="">Select one</option>
              <option value="none">No major history</option>
              <option value="sprain">Ankle or knee sprain before</option>
              <option value="growth">Diagnosed growth issue (Osgood-Schlatter, Sever's)</option>
              <option value="major">Major injury (ACL, fracture, surgery)</option>
            </select>
          </div>
          <div class="cds-error" id="cds-err-5">Answer both to continue.</div>
          <div class="cds-btn-row"><button class="cds-btn cds-btn-secondary" data-action="back" data-from="5">← Back</button><button class="cds-btn cds-btn-primary" data-action="next" data-from="5">Build My Program →</button></div>
        </div>

        <!-- STEP 6 · LEAD GATE -->
        <div class="cds-step" data-step="6">
          <div class="cds-step-num">Step 06 · Unlock Your Program</div>
          <h2 class="cds-step-title">Your durability program is ready.</h2>
          <p class="cds-step-sub">Coach Tim built your full plan. Drop your info below to unlock it instantly.</p>
          <div class="cds-ghl-form-wrap">
            <iframe
              src="about:blank"
              style="width:100%;min-height:540px;border:none;border-radius:10px;background:#ffffff;"
              id="inline-stGjVnBtHz381IwKCJ8m"
              data-layout="{'id':'INLINE'}"
              data-trigger-type="alwaysShow"
              data-activation-type="alwaysActivated"
              data-deactivation-type="neverDeactivate"
              data-form-name="CDS Soccer Durability System"
              data-height="540"
              data-layout-iframe-id="inline-stGjVnBtHz381IwKCJ8m"
              data-form-id="stGjVnBtHz381IwKCJ8m"
              title="CDS Soccer Durability System">
            </iframe>
            <script src="https://link.msgsndr.com/js/form_embed.js"></script>
          </div>
          <div class="cds-gate-trust">
            <span class="cds-trust-pill"><span class=cds-ei-lock></span> Private to CDS</span>
            <span class="cds-trust-pill"><span class=cds-ei-bolt></span> Instant unlock</span>
            <span class="cds-trust-pill"><span class=cds-ei-clipboard></span> Yours to keep</span>
          </div>
          <div class="cds-btn-row" style="border-top:none;padding-top:8px;"><button class="cds-btn cds-btn-secondary" data-action="back" data-from="6">← Back</button><span></span></div>
        </div>

      </div>

      <!-- LOADING -->
      <div class="cds-loading" id="cds-loading">
        <div class="cds-loading-ring">
          <svg viewBox="0 0 100 100" width="100" height="100">
            <circle cx="50" cy="50" r="42" fill="none" stroke="rgba(255,255,255,0.06)" stroke-width="6"/>
            <circle cx="50" cy="50" r="42" fill="none" stroke="#b5f23d" stroke-width="6" stroke-linecap="round" stroke-dasharray="80 264" transform="rotate(-90 50 50)"/>
          </svg>
        </div>
        <h2 class="cds-loading-title">Coach Tim is building your plan...</h2>
        <p class="cds-loading-msg" id="cds-loading-msg">Reading your athlete profile</p>
        <div class="cds-loading-bars" id="cds-loading-bars">
          <div class="cds-load-row" data-load="0"><span class="cds-load-check">✓</span> Reading age and growth stage</div>
          <div class="cds-load-row" data-load="1"><span class="cds-load-check">✓</span> Scoring non-contact injury risk</div>
          <div class="cds-load-row" data-load="2"><span class="cds-load-check">✓</span> Matching corrective work to limitations</div>
          <div class="cds-load-row" data-load="3"><span class="cds-load-check">✓</span> Building weekly recovery schedule</div>
          <div class="cds-load-row" data-load="4"><span class="cds-load-check">✓</span> Finalizing your durability program</div>
        </div>
      </div>
    </div>
  </section>

  <!-- ==================== RESULTS ==================== -->
  <div class="cds-results" id="cds-results">
    <div class="cds-inner">
      <div class="cds-report-header">
        <div class="cds-report-eyebrow">Soccer Durability System · Personal Program</div>
        <h1 class="cds-report-title" id="cds-report-title">Your Durability Blueprint</h1>
        <div class="cds-report-meta" id="cds-report-meta"></div>
        <div class="cds-action-bar">
          <button class="cds-action-btn" id="cds-print-btn" type="button">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect x="6" y="14" width="12" height="8"/></svg>
            Print Program
          </button>
          <button class="cds-action-btn cds-action-btn-primary" id="cds-save-btn" type="button">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
            Save As PDF
          </button>
        </div>
      </div>

      <div id="cds-report-body"></div>

    </div>

    <!-- Cross-sell -->
    <section class="cds-crosssell">
      <div class="cds-inner">
        <div class="cds-crosssell-header">
          <div class="cds-crosssell-eyebrow">Next Step Pathways</div>
          <h2 class="cds-crosssell-title">Ready to go deeper?</h2>
          <p class="cds-crosssell-sub">Three pathways. Pick where you go from here.</p>
        </div>
        <div class="cds-crosssell-grid">
          <a href="https://cdscommunity.com/pages/app-page" target="_blank" rel="noopener" class="cds-crosssell-card">
            <span class="cds-crosssell-tag"><span class=cds-ei-target></span> Full Data Foundation</span>
            <h3 class="cds-crosssell-headline">Want the real numbers behind the worry?</h3>
            <p class="cds-crosssell-text">The APP Evaluation measures landing, deceleration and single-leg control directly. Real data, not a guess.</p>
            <span class="cds-crosssell-cta">Book APP Evaluation →</span>
          </a>
          <a href="https://cdscommunity.com/pages/youth-group-training-8-14" target="_blank" rel="noopener" class="cds-crosssell-card">
            <span class="cds-crosssell-tag"><span class=cds-ei-check></span> Movement Foundation</span>
            <h3 class="cds-crosssell-headline">Master these moves in person.</h3>
            <p class="cds-crosssell-text">Functional Dynamics teaches the movement foundation that protects every growing soccer athlete.</p>
            <span class="cds-crosssell-cta">View Youth Programs →</span>
          </a>
          <a href="https://cdscommunity.com/pages/private-performance" target="_blank" rel="noopener" class="cds-crosssell-card">
            <span class="cds-crosssell-tag"><span class=cds-ei-flame></span> Personalized Plan</span>
            <h3 class="cds-crosssell-headline">Want it coached one on one?</h3>
            <p class="cds-crosssell-text">Private packages built around your athlete's body, position and recruitment timeline.</p>
            <span class="cds-crosssell-cta">View Private Packages →</span>
          </a>
        </div>
      </div>
    </section>
  </div>

  <!-- FOOTER -->
  <footer class="cds-footer">
    <div class="cds-inner">
      <div class="cds-footer-brand">Creative Dynamic <span class="cds-accent">Sports</span></div>
      <div class="cds-footer-coach">Coach Tim Buckley · Former NFL Player · Atlanta Falcons · Performance Specialist</div>
      <div class="cds-footer-contact">
        <a href="tel:6788079584"><span class=cds-ei-phone></span> 678-807-9584</a>
        <a href="mailto:Admin@cdscommunity.com"><span class=cds-ei-mail></span> Admin@cdscommunity.com</a>
        <span><span class=cds-ei-pin></span> 2270 Pendley Rd Suite 106, Cumming, GA 30041</span>
      </div>
      <button class="cds-restart" id="cds-restart">↻ Build Another Program</button>
      <div class="cds-footer-legal" style="margin-top: 24px;">© Creative Dynamic Sports · All rights reserved. This tool builds durability and corrective programming. It is not medical advice or diagnosis.</div>
    </div>
  </footer>

</div>

<script>
(function() {
  'use strict';
  var root = document.getElementById('cds-sds-root');
  if (!root) return;

  /* ====================== STATE ====================== */
  var state = { age:'', growth:'', loadSessions:'', loadMulti:'', loadRest:'', limits:[], painKnee:'', painHistory:'' };
  var TOTAL_STEPS = 6;
  var current = 1;

  function $(sel, ctx){ return (ctx||root).querySelector(sel); }
  function $all(sel, ctx){ return Array.prototype.slice.call((ctx||root).querySelectorAll(sel)); }

  /* ====================== STEP NAV ====================== */
  function showStep(n){
    $all('.cds-step').forEach(function(s){ s.classList.toggle('active', parseInt(s.dataset.step,10)===n); });
    $all('.cds-step-dot').forEach(function(d){
      var dn = parseInt(d.dataset.dot,10);
      d.classList.toggle('active', dn===n);
      d.classList.toggle('done', dn<n);
    });
    $('#cds-progress-label').textContent = 'Step '+n+' of '+TOTAL_STEPS;
    current = n;
    var card = $('#cds-form-card');
    if (card && card.scrollIntoView) card.scrollIntoView({behavior:'smooth', block:'start'});
    if (n === TOTAL_STEPS && typeof window.armGhlSubmissionListener === 'function') {
      window.armGhlSubmissionListener();
    }
  }

  function err(n, show){ var e=$('#cds-err-'+n); if(e) e.classList.toggle('show', !!show); }

  function validate(n){
    if(n===1) return !!state.age;
    if(n===2) return !!state.growth;
    if(n===3){
      state.loadSessions=$('#cds-load-sessions').value; state.loadMulti=$('#cds-load-multi').value; state.loadRest=$('#cds-load-rest').value;
      return state.loadSessions && state.loadMulti && state.loadRest;
    }
    if(n===4) return state.limits.length>0;
    if(n===5){
      state.painKnee=$('#cds-pain-knee').value; state.painHistory=$('#cds-pain-history').value;
      return state.painKnee && state.painHistory;
    }
    return true;
  }

  /* single + multi select wiring */
  $all('[data-single]').forEach(function(grid){
    var key = grid.dataset.single;
    grid.addEventListener('click', function(e){
      var c = e.target.closest('.cds-choice'); if(!c) return;
      $all('.cds-choice', grid).forEach(function(x){ x.classList.remove('selected'); });
      c.classList.add('selected'); state[key] = c.dataset.val;
    });
  });
  $all('[data-multi]').forEach(function(grid){
    grid.addEventListener('click', function(e){
      var l = e.target.closest('.cds-limit'); if(!l) return;
      l.classList.toggle('selected');
      state.limits = $all('.cds-limit.selected', grid).map(function(x){ return x.dataset.val; });
    });
  });

  root.addEventListener('click', function(e){
    var btn = e.target.closest('[data-action]'); if(!btn) return;
    var act = btn.dataset.action, from = parseInt(btn.dataset.from,10);
    if(act==='next'){
      if(!validate(from)){ err(from,true); return; }
      err(from,false); showStep(from+1);
    } else if(act==='back'){
      err(from,false); showStep(from-1);
    }
  });

  /* ====================== ANALYSIS ENGINE ====================== */
  var AGE_LABEL = {'8-10':'8 to 10','11-13':'11 to 13','14-15':'14 to 15','16-18':'16 to 18'};

  function buildSmartAnalysis(){
    var s = state;
    /* ---- RISK SCORE (modifiable, soccer non-contact lens) ---- */
    var risk = 0;
    if(s.loadSessions==='mod') risk+=1; else if(s.loadSessions==='high') risk+=2; else if(s.loadSessions==='extreme') risk+=3;
    if(s.loadMulti==='yes') risk+=2;
    if(s.loadRest==='some') risk+=1; else if(s.loadRest==='no') risk+=2;
    if(s.growth==='active') risk+=2; else if(s.growth==='some') risk+=1; else if(s.growth==='unsure') risk+=1;
    if(s.limits.indexOf('knee')>-1) risk+=2;
    if(s.limits.indexOf('stability')>-1) risk+=1;
    if(s.limits.indexOf('hips')>-1) risk+=1;
    if(s.painKnee==='mild') risk+=1; else if(s.painKnee==='regular') risk+=3;
    if(s.painHistory==='sprain') risk+=1; else if(s.painHistory==='growth') risk+=2; else if(s.painHistory==='major') risk+=3;

    var maxRisk = 21;
    var pct = Math.round((risk/maxRisk)*100);
    var tier, tierClass, tierMsg;
    if(pct < 33){ tier='LOWER RISK'; tierClass='cds-tier-low';
      tierMsg='The current load and history look manageable. The work below keeps it that way. Durability is built in the low-risk window, not after the injury.'; }
    else if(pct < 60){ tier='MODERATE RISK'; tierClass='cds-tier-mod';
      tierMsg='There are real modifiable factors stacking up here. The good news is every one of them responds to training. This program targets the biggest levers first.'; }
    else { tier='ELEVATED RISK'; tierClass='cds-tier-high';
      tierMsg='Several risk factors are stacking at once. This is exactly the profile that ends up on the sideline. The plan below is built to pull that risk down fast. If there is active pain or a knee that gives out, see a doctor before loading.'; }

    /* ---- GROWTH CONTEXT ---- */
    var growthNote;
    if(s.growth==='active'){
      growthNote='This athlete is in an active growth spurt. Bones are outpacing tendons right now, which is exactly when Osgood-Schlatter at the knee and Sever\u2019s at the heel show up. The plan leans on isometrics and controlled tempo work that loads tissue without the pounding that flares growing joints. Volume stays smart, not maxed.';
    } else if(s.growth==='some' || s.growth==='unsure'){
      growthNote='There is some growth happening or it is hard to call. We treat that as a yellow light. The program builds strength through ranges the athlete already owns and uses isometric holds to load tendons safely while the body changes.';
    } else {
      growthNote='Growth looks steady right now, which is the best window to build a durable base. We can push strength and reactive work harder here because the skeleton is not in a vulnerable spike.';
    }

    /* ---- FOCUS LIBRARY ---- */
    var LIB = {
      core: { icon:'<span class=cds-ei-target></span>', name:'Core Strength', why:'Trunk control protects the spine and feeds every cut',
        ex:[
          {n:'Dead Bug · Slow', c:'Flat back into floor the whole time. Control beats speed.', d:'3 x 8 each side'},
          {n:'Side Plank', c:'Stack hips. Build the time, do not rush it.', d:'3 x 20 to 30s'},
          {n:'Pallof Press Hold', c:'Band or towel anchored. Resist the twist.', d:'3 x 20s each'}
        ]},
      hips: { icon:'<span class=cds-ei-leg></span>', name:'Hip Strength', why:'The engine for sprinting, cutting and shielding',
        ex:[
          {n:'Glute Bridge March', c:'Hips up, march without letting the pelvis dip.', d:'3 x 8 each'},
          {n:'Lateral Band Walk', c:'Tension on the band the whole walk. Knees out.', d:'3 x 10 each way'},
          {n:'Single-Leg Hip Hinge', c:'Hinge at the hip, flat back, feel the hamstring.', d:'3 x 8 each'}
        ]},
      stability: { icon:'<span class=cds-ei-scale></span>', name:'Single-Leg Stability', why:'Wobbly landings are where non-contact knees go',
        ex:[
          {n:'Single-Leg Balance', c:'Eyes up, soft knee. Progress to eyes closed.', d:'3 x 30s each'},
          {n:'Step-Down · Slow', c:'Lower under control off a low box. No knee cave.', d:'3 x 6 each'},
          {n:'Single-Leg RDL Reach', c:'Reach and return without touching down.', d:'3 x 6 each'}
        ]},
      tspine: { icon:'<span class=cds-ei-refresh></span>', name:'Thoracic Rotation', why:'Upper-back turn for striking and shielding',
        ex:[
          {n:'Open Book', c:'Lie on side, open the top arm, follow with eyes.', d:'2 x 8 each'},
          {n:'Quadruped T-Spine Reach', c:'Hand behind head, rotate the upper back open.', d:'2 x 8 each'},
          {n:'Half-Kneel Rotation', c:'Rotate from the ribs, keep hips quiet.', d:'2 x 8 each'}
        ]},
      knee: { icon:'<span class=cds-ei-shield></span>', name:'Knee Tracking · ACL Defense', why:'The single biggest non-contact protector',
        ex:[
          {n:'Wall Sit', c:'Knees tracking over toes. Isometric, growth-safe.', d:'3 x 30 to 45s'},
          {n:'Box Drop to Stick', c:'Land soft, knees out, freeze 2 seconds.', d:'3 x 5'},
          {n:'Tempo Split Squat', c:'3 seconds down, knee never caves in.', d:'3 x 6 each'}
        ]},
      hamquad: { icon:'<span class=cds-ei-bolt></span>', name:'Hamstring / Quad Balance', why:'Sprint protection and pull prevention',
        ex:[
          {n:'Nordic Hamstring · Assisted', c:'Lower as slow as you can control. Hands ready.', d:'3 x 4 to 6'},
          {n:'Spanish Squat Hold', c:'Band behind knees, sit back into the hold.', d:'3 x 30s'},
          {n:'A-Skip', c:'Tall posture, snappy ankle, build coordination.', d:'3 x 20m'}
        ]},
      ankle: { icon:'<span class=cds-ei-foot></span>', name:'Ankle Strength', why:'Stops rolls and powers push off',
        ex:[
          {n:'Single-Leg Calf Raise', c:'Full height, slow lower. Build to one leg.', d:'3 x 12 each'},
          {n:'Ankle Eversion Band', c:'Band on the foot, turn the sole outward.', d:'3 x 15 each'},
          {n:'Single-Leg Hop to Stick', c:'Small hop, land quiet, hold the landing.', d:'3 x 6 each'}
        ]},
      recovery: { icon:'<span class=cds-ei-spark></span>', name:'Recovery Capacity', why:'Bounce back faster, train more without breaking',
        ex:[
          {n:'Post-Game Flush Walk', c:'10 easy minutes within an hour of finishing.', d:'10 min'},
          {n:'Legs Up Wall', c:'Drain the legs, breathe slow through the nose.', d:'5 to 8 min'},
          {n:'Foam Roll · Quads + Calves', c:'Slow passes, pause on tender spots.', d:'5 min'}
        ]}
    };

    var picked = s.limits.length ? s.limits : ['stability','knee'];
    var focusCards = picked.map(function(k){ return LIB[k]; }).filter(Boolean);
    /* Always fold in knee defense for at-risk profiles even if not selected */
    if(picked.indexOf('knee')===-1 && pct>=60){ focusCards.unshift(LIB.knee); }

    /* ---- WEEKLY SCHEDULE (built off load) ---- */
    var heavyLoad = (s.loadSessions==='high' || s.loadSessions==='extreme' || s.loadMulti==='yes');
    var week;
    if(heavyLoad){
      week=[
        {d:'Mon',f:'Corrective + stability',t:'train'},
        {d:'Tue',f:'Soccer day · pre-game prep',t:'recover'},
        {d:'Wed',f:'Knee + hip strength',t:'train'},
        {d:'Thu',f:'Soccer day · flush after',t:'recover'},
        {d:'Fri',f:'Mobility + light core',t:'recover'},
        {d:'Sat',f:'Game day · land soft',t:'recover'},
        {d:'Sun',f:'Full rest + legs up wall',t:'rest'}
      ];
    } else {
      week=[
        {d:'Mon',f:'Strength + stability block',t:'train'},
        {d:'Tue',f:'Soccer or skill',t:'recover'},
        {d:'Wed',f:'Corrective + mobility',t:'train'},
        {d:'Thu',f:'Soccer or skill',t:'recover'},
        {d:'Fri',f:'Knee defense + power',t:'train'},
        {d:'Sat',f:'Game or scrimmage',t:'recover'},
        {d:'Sun',f:'Full rest',t:'rest'}
      ];
    }

    /* ---- LOAD VERDICT ---- */
    var loadVerdict;
    if(s.loadRest==='no' && (s.loadSessions==='high'||s.loadSessions==='extreme')){
      loadVerdict='This is a year-round, high-volume load with no real rest block. That is the number-one driver of growing-athlete breakdown. The single highest-leverage move is not another drill, it is one true off block per training year. Build it in before the body forces one.';
    } else if(s.loadMulti==='yes'){
      loadVerdict='Playing for more than one team at once stacks games and practices that nobody is counting together. Add up the real weekly total. If it is climbing, the corrective work below is what keeps the body ahead of the load.';
    } else {
      loadVerdict='The current load looks manageable. Keep protecting it with the work below and watch for creep when seasons overlap.';
    }

    /* ---- RECRUIT / AGE FRAMING ---- */
    var ageFrame;
    if(s.age==='16-18'){
      ageFrame='At this age availability is the whole game. Scouts cannot recruit an athlete who is hurt. The durability work here is not separate from performance, it is what lets the athlete show up healthy for every showcase and every season that matters.';
    } else if(s.age==='14-15'){
      ageFrame='This is the base-building window before the recruit years. Get the movement quality and the durability habits locked now and the high-volume years ahead are far safer.';
    } else if(s.age==='11-13'){
      ageFrame='This is the growth window. The goal is not to make a 12-year-old strong, it is to keep them moving well and pain-free through the changes so they still love the game at 16.';
    } else {
      ageFrame='These are the foundation years. Everything here is about movement quality and confidence. Make it a game, keep it light, build the habit of taking care of the body early.';
    }

    /* ---- COACH NOTE ---- */
    var coachNote;
    if(pct>=60){
      coachNote='I have seen this exact profile too many times. A kid who loves the game, plays it constantly and ends up on the sideline because nobody was building the body underneath the sport. We change that. Run this consistently, respect the rest days and watch the worry turn into confidence.';
    } else if(pct>=33){
      coachNote='You caught this at the right time. The factors here are all fixable and that is the whole point. Stay consistent with the corrective work, do not skip the recovery days and this athlete builds a body that holds up when the season gets long.';
    } else {
      coachNote='This is a strong starting point and that is something to protect. Durability is not built after the injury, it is built right now in the healthy window. Keep this in the routine and stay ahead of it.';
    }

    return {
      pct: pct, tier: tier, tierClass: tierClass, tierMsg: tierMsg,
      growthNote: growthNote, focusCards: focusCards, week: week,
      loadVerdict: loadVerdict, ageFrame: ageFrame, coachNote: coachNote
    };
  }

  /* ====================== RENDER ====================== */
  function esc(t){ var d=document.createElement('div'); d.textContent=t; return d.innerHTML; }

  function render(a){
    $('#cds-report-meta').innerHTML = 'Age <strong>'+esc(AGE_LABEL[state.age]||state.age)+'</strong> · Focus on <strong>'+state.limits.length+'</strong> area'+(state.limits.length===1?'':'s')+' · Built '+new Date().toLocaleDateString('en-US',{month:'long',day:'numeric',year:'numeric'});

    var dash = a.pct; var circ = 2*Math.PI*46; var fill = circ*(dash/100);
    var dialColor = a.tierClass==='cds-tier-low'?'#b5f23d':(a.tierClass==='cds-tier-mod'?'#ffb547':'#ff5470');

    var html = '';

    /* RISK SECTION */
    html += '<div class="cds-section">'
      + '<div class="cds-section-eyebrow">Injury Risk Read</div>'
      + '<h2 class="cds-section-title">Non-Contact Risk Score</h2>'
      + '<div class="cds-risk-wrap">'
        + '<div class="cds-risk-dial"><svg viewBox="0 0 100 100" width="160" height="160">'
          + '<circle cx="50" cy="50" r="46" fill="none" stroke="rgba(255,255,255,0.07)" stroke-width="7"/>'
          + '<circle cx="50" cy="50" r="46" fill="none" stroke="'+dialColor+'" stroke-width="7" stroke-linecap="round" stroke-dasharray="'+fill.toFixed(1)+' '+circ.toFixed(1)+'" transform="rotate(-90 50 50)"/>'
          + '</svg><div class="cds-risk-num"><div class="cds-risk-score" style="color:'+dialColor+'">'+a.pct+'%</div><div class="cds-risk-label">Modifiable</div></div></div>'
        + '<div><span class="cds-risk-tier '+a.tierClass+'">'+a.tier+'</span><p>'+a.tierMsg+'</p>'
        + '<p style="font-size:13px;color:var(--cds-gray-2);">This score reads only the factors training can change. Load, rest, growth stage, single-leg control and history. The lower the number, the more durable the athlete. Every point here is something we can pull down with the work below.</p></div>'
      + '</div></div>';

    /* GROWTH */
    html += '<div class="cds-section"><div class="cds-section-eyebrow">Development Stage</div>'
      + '<h2 class="cds-section-title">Growth Window Read</h2><p>'+a.growthNote+'</p></div>';

    /* FOCUS PROGRAM */
    html += '<div class="cds-section"><div class="cds-section-eyebrow">Your Program</div>'
      + '<h2 class="cds-section-title">Built Around Your Limitations</h2>'
      + '<p style="margin-bottom:18px;">Each block below targets a specific worry you flagged. Run them on training days. Quality over speed, every rep.</p>';
    a.focusCards.forEach(function(f){
      html += '<div class="cds-focus-card"><div class="cds-focus-head"><div class="cds-focus-icon">'+f.icon+'</div>'
        + '<div><div class="cds-focus-name">'+esc(f.name)+'</div><div class="cds-focus-why">'+esc(f.why)+'</div></div></div>'
        + '<div class="cds-ex-list">';
      f.ex.forEach(function(x){
        html += '<div class="cds-ex"><div><div class="cds-ex-name">'+esc(x.n)+'</div><div class="cds-ex-cue">'+esc(x.c)+'</div></div><div class="cds-ex-dose">'+esc(x.d)+'</div></div>';
      });
      html += '</div></div>';
    });
    html += '</div>';

    /* WEEKLY SCHEDULE */
    html += '<div class="cds-section"><div class="cds-section-eyebrow">Weekly Structure</div>'
      + '<h2 class="cds-section-title">Your 7-Day Durability Week</h2>'
      + '<p>This wraps around the soccer schedule, it does not add to the pile. Corrective work on lighter days, recovery built around games, one true rest day.</p>'
      + '<div class="cds-week">';
    a.week.forEach(function(d){
      var tag = d.t==='train'?'<span class="cds-day-tag cds-tag-train">Build</span>':(d.t==='recover'?'<span class="cds-day-tag cds-tag-recover">Recover</span>':'<span class="cds-day-tag cds-tag-rest">Rest</span>');
      html += '<div class="cds-day"><div class="cds-day-name">'+d.d+'</div><div class="cds-day-focus">'+esc(d.f)+'</div>'+tag+'</div>';
    });
    html += '</div></div>';

    /* LOAD VERDICT */
    html += '<div class="cds-section"><div class="cds-section-eyebrow">Load Audit</div>'
      + '<h2 class="cds-section-title">The Honest Load Read</h2><p>'+a.loadVerdict+'</p>'
      + '<div class="cds-callout"><div class="cds-callout-label"><span class=cds-ei-pin></span> Coach Tim Rule</div>'
      + '<p style="margin:0;">More soccer is not more development past a point. The athletes who last are the ones who train the body that plays the sport, not just the sport.</p></div></div>';

    /* AGE FRAME */
    html += '<div class="cds-section"><div class="cds-section-eyebrow">The Big Picture</div>'
      + '<h2 class="cds-section-title">Where This Fits Long Term</h2><p>'+a.ageFrame+'</p></div>';

    /* COACH NOTE */
    html += '<div class="cds-section"><div class="cds-section-eyebrow">From Coach Tim</div>'
      + '<h2 class="cds-section-title">A Note To You</h2>'
      + '<div class="cds-coach-note"><img src="https://cdn.shopify.com/s/files/1/1462/5190/files/IMG_4425_3_240x240.jpg?v=1759811592" alt="Coach Tim Buckley"/>'
      + '<div><p>'+a.coachNote+'</p><div class="cds-coach-sig">Coach Tim Buckley · Former NFL Player · Atlanta Falcons</div></div></div></div>';

    $('#cds-report-body').innerHTML = html;
  }

  /* ====================== LOADING ANIMATION ====================== */
  var LOAD_MSGS = ['Reading your athlete profile','Scoring non-contact risk','Matching corrective work','Building your weekly plan','Locking it in'];
  function runLoading(done){
    var rows = $all('.cds-load-row'); var i=0;
    var msg = $('#cds-loading-msg');
    rows.forEach(function(r){ r.classList.remove('done'); });
    var iv = setInterval(function(){
      if(i<rows.length){ rows[i].classList.add('done'); if(msg && LOAD_MSGS[i]) msg.textContent=LOAD_MSGS[i]; i++; }
      else { clearInterval(iv); setTimeout(done, 350); }
    }, 520);
  }

  /* ====================== UNLOCK ENTRY POINT ====================== */
  window.runAnalysis = function(){
    $('#cds-form-card').style.display='none';
    $('#cds-loading').classList.add('show');
    var loading = $('#cds-loading');
    if(loading && loading.scrollIntoView) loading.scrollIntoView({behavior:'smooth', block:'center'});
    var analysis = buildSmartAnalysis();
    runLoading(function(){
      $('#cds-loading').classList.remove('show');
      render(analysis);
      $('#cds-results').classList.add('show');
      var res = $('#cds-results');
      if(res && res.scrollIntoView) res.scrollIntoView({behavior:'smooth', block:'start'});
    });
  };

  /* ====================== PRINT / SAVE ====================== */
  root.addEventListener('click', function(e){
    var t = e.target.closest('#cds-print-btn, #cds-save-btn'); if(!t) return;
    e.preventDefault(); window.print();
  });

  /* ====================== RESTART ====================== */
  $('#cds-restart').addEventListener('click', function(){
    state = { age:'', growth:'', loadSessions:'', loadMulti:'', loadRest:'', limits:[], painKnee:'', painHistory:'' };
    $all('.cds-choice').forEach(function(x){ x.classList.remove('selected'); });
    $all('.cds-limit').forEach(function(x){ x.classList.remove('selected'); });
    $all('select', root).forEach(function(sel){ sel.value=''; });
    $('#cds-results').classList.remove('show');
    $('#cds-loading').classList.remove('show');
    $('#cds-form-card').style.display='';
    if(typeof window.resetGhlSubmissionListener==='function') window.resetGhlSubmissionListener();
    showStep(1);
    if(root.scrollIntoView) root.scrollIntoView({behavior:'smooth', block:'start'});
  });

})();
</script>

<script>
/* ============================================================================
   CDS LEAD GATE · Production Detection Module (proven pattern)
   Watches the visible GHL iframe for submission via height-shrink + URL + body.
   Fires window.runAnalysis() on detect. No bypass button by design.
============================================================================ */
(function() {
  'use strict';
  var IFRAME_ID = 'inline-stGjVnBtHz381IwKCJ8m';
  var POLL_INTERVAL_MS = 400;
  var ARMING_DELAY_MS = 5000;
  var HEIGHT_SHRINK_THRESHOLD_PX = 50;

  var ghlSubmitFired = false, ghlPollInterval = null, ghlInitialIframeHeight = null,
      ghlArmedAt = 0, ghlMaxHeightSeen = 0;

  window.armGhlSubmissionListener = function() {
    /* CDS MEMBER MODE · access verified by the Vault page guard · skip the lead gate, run the result */
    if (typeof window.runAnalysis === 'function') { window.runAnalysis(); return; }
    ghlSubmitFired = false; ghlArmedAt = Date.now(); ghlMaxHeightSeen = 0;
    if (ghlPollInterval) clearInterval(ghlPollInterval);
    ghlInitialIframeHeight = null;
    setTimeout(function() {
      var iframe = document.querySelector('#' + IFRAME_ID);
      if (!iframe) { console.warn('[CDS Lead Gate] GHL iframe not found · id:', IFRAME_ID); return; }
      ghlInitialIframeHeight = iframe.offsetHeight; ghlMaxHeightSeen = ghlInitialIframeHeight;
      console.log('[CDS Lead Gate] <span class=cds-ei-target></span> GHL iframe armed · settled height:', ghlInitialIframeHeight);
      ghlPollInterval = setInterval(function() {
        if (ghlSubmitFired) { clearInterval(ghlPollInterval); return; }
        var currentHeight = iframe.offsetHeight;
        if (currentHeight > ghlMaxHeightSeen) { ghlMaxHeightSeen = currentHeight; console.log('[CDS Lead Gate] iframe grew to:', currentHeight); }
        try {
          var currentSrc = iframe.src || '';
          if (currentSrc.indexOf('thank')>-1 || currentSrc.indexOf('success')>-1 || currentSrc.indexOf('complete')>-1 || currentSrc.indexOf('submitted')>-1) {
            console.log('[CDS Lead Gate] submit detected via URL change'); triggerUnlock('url-change'); return;
          }
        } catch (e) {}
        if (ghlMaxHeightSeen > 0 && currentHeight > 0 && (ghlMaxHeightSeen - currentHeight) > HEIGHT_SHRINK_THRESHOLD_PX) {
          console.log('[CDS Lead Gate] <span class=cds-ei-target></span> submit detected · height shrank:', ghlMaxHeightSeen, '→', currentHeight);
          triggerUnlock('height-shrink'); return;
        }
        try {
          var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
          if (iframeDoc && iframeDoc.body) {
            var bodyText = (iframeDoc.body.innerText || '').toLowerCase();
            if (bodyText.indexOf('thank you')>-1 || bodyText.indexOf('thanks for')>-1 || bodyText.indexOf('successfully')>-1 || bodyText.indexOf('we received')>-1 || bodyText.indexOf('your submission')>-1) {
              console.log('[CDS Lead Gate] submit detected via body content'); triggerUnlock('body-content'); return;
            }
          }
        } catch (e) {}
      }, POLL_INTERVAL_MS);
    }, ARMING_DELAY_MS);
  };

  function triggerUnlock(reason) {
    if (ghlSubmitFired) return;
    ghlSubmitFired = true;
    console.log('[CDS Lead Gate] <span class=cds-ei-check></span> UNLOCKING REPORT · reason:', reason);
    if (ghlPollInterval) clearInterval(ghlPollInterval);
    if (typeof window.runAnalysis === 'function') { window.runAnalysis(); }
    else { console.error('[CDS Lead Gate] runAnalysis function not found · cannot unlock'); }
  }

  /* ============================================================================
     PRIMARY DETECTION · set-sticky-contacts with submission payload
     ============================================================================
     GHL sends set-sticky-contacts on EVERY field change, but the FINAL submit
     event sends a fuller payload that includes customer_id + full_name +
     full_address together. We confirm submit by:
       1. Watching for set-sticky-contacts with customer_id AND email/phone
       2. Then waiting 800ms (matches CDS Standard) before unlocking, to ensure
          the submission completed and isn't just mid-typing.
     This is the SAME pattern as the proven CDS production tools.
  ============================================================================ */
  var stickyContactsSubmitSeen = false;
  var stickyUnlockTimer = null;

  window.addEventListener('message', function(event) {
    if (!event.data) return;
    if (ghlArmedAt === 0) return;
    var origin = event.origin || '';
    var isFromGhl = origin.indexOf('leadconnector')>-1 || origin.indexOf('msgsndr')>-1 || origin.indexOf('gohighlevel')>-1 || origin.indexOf('highlevel')>-1;
    if (!isFromGhl) return;
    var signalText = '';
    if (typeof event.data === 'string') { signalText = event.data.toLowerCase(); }
    else if (typeof event.data === 'object') { try { signalText = JSON.stringify(event.data).toLowerCase(); } catch (e) {} }
    console.log('[CDS Lead Gate] GHL postMessage (diagnostic):', signalText.slice(0, 200));

    // EXPLICIT submit events (rarest, most reliable when they fire)
    if (signalText.indexOf('"event":"form_submitted"')>-1 || signalText.indexOf('"type":"form_submitted"')>-1) {
      triggerUnlock('postMessage-explicit'); return;
    }

    // PRIMARY: set-sticky-contacts with a FULL contact payload = submission
    // Mid-typing only has partial fields. The submission payload contains customer_id
    // and either full_name or email and phone together.
    if (signalText.indexOf('set-sticky-contacts')>-1 && signalText.indexOf('customer_id')>-1) {
      var hasName = signalText.indexOf('full_name')>-1 || signalText.indexOf('"first_name"')>-1;
      var hasContact = signalText.indexOf('"email"')>-1 || signalText.indexOf('"phone"')>-1;
      if (hasName && hasContact && !stickyContactsSubmitSeen) {
        stickyContactsSubmitSeen = true;
        console.log('[CDS Lead Gate] <span class=cds-ei-target></span> set-sticky-contacts with full payload detected, arming 800ms unlock confirmation');
        if (stickyUnlockTimer) clearTimeout(stickyUnlockTimer);
        stickyUnlockTimer = setTimeout(function() {
          triggerUnlock('set-sticky-contacts-payload');
        }, 800);
      }
    }
  });

  window.resetGhlSubmissionListener = function() {
    ghlSubmitFired = false; ghlArmedAt = 0; ghlMaxHeightSeen = 0;
    stickyContactsSubmitSeen = false;
    if (stickyUnlockTimer) { clearTimeout(stickyUnlockTimer); stickyUnlockTimer = null; }
    if (ghlPollInterval) clearInterval(ghlPollInterval);
  };
})();
</script>