Youth Athlete Development Blueprint · 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-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-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-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-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-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")}</style>

<!-- ============================================================================
     CDS YOUTH ATHLETE DEVELOPMENT BLUEPRINT · LEAD-GATED TOOL
     ============================================================================
     Shopify Custom Liquid block. Namespace: .cds-dab
     GHL Form ID: 8zrU29jLl8ZDYLFsA09W  ·  Tag: free_dev_blueprint
     Free lead magnet. Educational Blueprint + 3-question development-stage
     diagnostic. Output reveals the athlete's stage plus the CDS Summer 2026
     Functional Dynamics schedule and booking CTA.
     No meta tags, no Open Graph, no JSON-LD. SEO lives in Shopify 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-dab {
  --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-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(900px 500px at 12% 0%, rgba(22,71,232,0.20), transparent 60%),
    radial-gradient(800px 500px at 92% 12%, rgba(181,242,61,0.10), transparent 55%),
    linear-gradient(180deg, var(--cds-navy) 0%, var(--cds-navy-mid) 55%, var(--cds-navy) 100%);
}

.cds-dab *, .cds-dab *::before, .cds-dab *::after { box-sizing: border-box; }
.cds-dab p { margin: 0; }
.cds-dab button { font-family: inherit; cursor: pointer; }
.cds-dab input, .cds-dab textarea, .cds-dab select { font-family: inherit; }

.cds-dab h1, .cds-dab h2, .cds-dab h3, .cds-dab 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;
  color: var(--cds-white);
}

.cds-dab .cds-inner { max-width: 1080px; margin: 0 auto; padding: 0 22px; }
.cds-dab .cds-accent { color: var(--cds-lime); }

/* ==================== HERO ==================== */
.cds-dab .cds-hero { padding: 54px 0 30px; }
.cds-dab .cds-hero-grid {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 38px;
  align-items: start;
}
.cds-dab .cds-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cds-lime);
  background: rgba(181,242,61,0.07);
  border: 1px solid rgba(181,242,61,0.22);
  padding: 8px 16px;
  border-radius: 4px;
  margin-bottom: 20px;
}
.cds-dab .cds-eyebrow-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--cds-lime);
  box-shadow: 0 0 10px var(--cds-lime);
}
.cds-dab .cds-hero-title { font-size: 58px; margin-bottom: 14px; }
.cds-dab .cds-hero-lead {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 21px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 12px;
}
.cds-dab .cds-hero-title-top { display: block; color: var(--cds-white); }
.cds-dab .cds-hero-title .cds-accent { display: block; }
.cds-dab .cds-hero-sub {
  font-size: 17px;
  color: var(--cds-gray-1);
  line-height: 1.6;
  max-width: 540px;
  margin-bottom: 22px;
}
.cds-dab .cds-hero-promise {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 24px;
}
.cds-dab .cds-promise-item {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 14px;
  font-weight: 600;
  color: var(--cds-gray-1);
  background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(255,255,255,0.01));
  border: 1px solid rgba(255,255,255,0.07);
  padding: 11px 13px;
  border-radius: 11px;
}
.cds-dab .cds-promise-icon { font-size: 16px; }

/* trust pill row */
.cds-dab .cds-trust-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.cds-dab .cds-trust-pill {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--cds-soft-blue);
  background: rgba(22,71,232,0.12);
  border: 1px solid rgba(22,71,232,0.3);
  padding: 8px 14px;
  border-radius: 4px;
}

/* video block */
.cds-dab .cds-video-wrap { margin-top: 22px; }
.cds-dab .cds-video-label {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 10px;
}
.cds-dab .cds-video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(181,242,61,0.28);
  box-shadow: 0 24px 60px rgba(0,0,0,0.5);
  background:
    radial-gradient(500px 280px at 50% 35%, rgba(22,71,232,0.30), transparent 70%),
    linear-gradient(135deg, var(--cds-navy-light), var(--cds-navy));
}
.cds-dab .cds-video-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
}
/* placeholder shown until a real embed replaces the inner content */
.cds-dab .cds-video-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  text-align: center;
  padding: 24px;
}
.cds-dab .cds-play-btn {
  width: 74px; height: 74px;
  border-radius: 50%;
  background: var(--cds-lime);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 10px rgba(181,242,61,0.12), 0 12px 30px rgba(0,0,0,0.45);
}
.cds-dab .cds-play-btn svg { margin-left: 5px; }
.cds-dab .cds-video-ph-title {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 22px;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--cds-white);
}
.cds-dab .cds-video-ph-sub {
  font-size: 13px;
  color: var(--cds-gray-2);
  max-width: 360px;
}

/* ==================== COACH TIM CARD ==================== */
.cds-dab .cds-coach-card {
  position: relative;
  padding: 36px 26px 26px;
  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: 16px;
  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-dab .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: 16px 16px 0 0;
}
.cds-dab .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: 4px;
  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-dab .cds-coach-photo {
  width: 124px; height: 124px;
  border-radius: 50%;
  margin: 8px auto 16px;
  display: block;
  border: 3px solid var(--cds-lime);
  box-shadow: 0 0 50px rgba(181,242,61,0.35), 0 0 0 6px rgba(181,242,61,0.08);
  object-fit: cover;
}
.cds-dab .cds-coach-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  text-transform: uppercase;
  font-size: 25px;
  margin-bottom: 6px;
}
.cds-dab .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-dab .cds-coach-creds { display: grid; gap: 11px; margin-bottom: 20px; text-align: left; }
.cds-dab .cds-cred-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border-radius: 8px;
  border-left: 2px solid var(--cds-lime);
}
.cds-dab .cds-cred-icon { font-size: 21px; flex-shrink: 0; }
.cds-dab .cds-cred-text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.cds-dab .cds-cred-text strong {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.2;
}
.cds-dab .cds-cred-text span { font-size: 11px; color: var(--cds-gray-2); font-weight: 500; line-height: 1.3; }
.cds-dab .cds-coach-quote {
  font-style: italic;
  font-size: 13px;
  color: var(--cds-lime);
  line-height: 1.5;
  padding: 14px 16px;
  background: rgba(181,242,61,0.06);
  border-radius: 8px;
  border: 1px solid rgba(181,242,61,0.15);
  font-weight: 500;
}

/* ==================== SECTION SHELL ==================== */
.cds-dab .cds-section-block { padding: 14px 0 30px; }
.cds-dab .cds-card {
  background: linear-gradient(135deg, var(--cds-navy-2), var(--cds-navy));
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 18px;
  padding: 34px 30px;
  box-shadow: 0 20px 50px rgba(0,0,0,0.4);
}
.cds-dab .cds-section-num {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 8px;
}
.cds-dab .cds-section-title { font-size: 32px; margin-bottom: 8px; color: var(--cds-white); }
.cds-dab .cds-section-sub {
  font-size: 15px;
  color: var(--cds-gray-1);
  line-height: 1.6;
  margin-bottom: 22px;
  max-width: 640px;
}
.cds-dab .cds-hint {
  font-size: 13px;
  color: var(--cds-soft-blue);
  background: rgba(22,71,232,0.1);
  border: 1px solid rgba(22,71,232,0.32);
  border-left: 3px solid var(--cds-cobalt);
  border-radius: 8px;
  padding: 11px 14px;
  margin-bottom: 20px;
}

/* progress counter */
.cds-dab .cds-progress {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 24px;
}
.cds-dab .cds-progress-dots { display: flex; gap: 7px; }
.cds-dab .cds-step-dot {
  width: 28px; height: 5px;
  border-radius: 3px;
  background: rgba(255,255,255,0.12);
  transition: background 0.3s;
}
.cds-dab .cds-step-dot.active { background: var(--cds-lime); }
.cds-dab .cds-step-dot.done { background: var(--cds-cobalt); }
.cds-dab .cds-progress-label {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cds-gray-2);
}

/* ==================== BLUEPRINT CONTENT ==================== */
.cds-dab .cds-stage-grid { display: grid; gap: 12px; margin-bottom: 8px; }
.cds-dab .cds-stage-row {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 16px;
  align-items: start;
  padding: 16px 18px;
  background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(255,255,255,0.01));
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
}
.cds-dab .cds-stage-badge {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 20px;
  width: 44px; height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: rgba(181,242,61,0.12);
  border: 1px solid rgba(181,242,61,0.3);
  color: var(--cds-lime);
  flex-shrink: 0;
}
.cds-dab .cds-stage-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 18px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--cds-white);
  margin-bottom: 3px;
}
.cds-dab .cds-stage-age {
  font-size: 12px;
  color: var(--cds-lime);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 6px;
}
.cds-dab .cds-stage-desc { font-size: 14px; color: var(--cds-gray-1); line-height: 1.55; }

.cds-dab .cds-flag-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cds-dab .cds-flag-item {
  display: flex;
  gap: 10px;
  font-size: 14px;
  color: var(--cds-gray-1);
  line-height: 1.5;
  padding: 13px 15px;
  background: rgba(255,84,112,0.06);
  border: 1px solid rgba(255,84,112,0.2);
  border-radius: 10px;
}
.cds-dab .cds-flag-mark { color: var(--cds-danger); font-weight: 800; flex-shrink: 0; }

.cds-dab .cds-gap-block {
  background: linear-gradient(135deg, rgba(22,71,232,0.14), rgba(22,71,232,0.04));
  border: 1px solid rgba(22,71,232,0.3);
  border-radius: 12px;
  padding: 20px 22px;
}
.cds-dab .cds-gap-block p { font-size: 14.5px; color: var(--cds-gray-1); line-height: 1.65; }
.cds-dab .cds-gap-block p + p { margin-top: 12px; }

.cds-dab .cds-pillar-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cds-dab .cds-pillar {
  padding: 16px 18px;
  background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(255,255,255,0.01));
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  border-top: 2px solid var(--cds-lime);
}
.cds-dab .cds-pillar-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 16px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 5px;
}
.cds-dab .cds-pillar-desc { font-size: 13.5px; color: var(--cds-gray-1); line-height: 1.55; }

/* ==================== DIAGNOSTIC ==================== */
.cds-dab .cds-q-block { margin-bottom: 22px; }
.cds-dab .cds-q-label {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 18px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--cds-white);
  margin-bottom: 12px;
}
.cds-dab .cds-q-label .cds-q-num { color: var(--cds-lime); margin-right: 8px; }
.cds-dab .cds-opt-grid { display: grid; gap: 9px; }
.cds-dab .cds-opt {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: var(--cds-navy-3);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 11px;
  font-size: 14.5px;
  color: var(--cds-gray-1);
  font-weight: 500;
  transition: border-color 0.18s, background 0.18s, transform 0.1s;
  text-align: left;
  width: 100%;
}
.cds-dab .cds-opt:hover { border-color: rgba(181,242,61,0.4); }
.cds-dab .cds-opt.selected {
  border-color: var(--cds-lime);
  background: rgba(181,242,61,0.08);
  color: var(--cds-white);
}
.cds-dab .cds-opt-tick {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.2);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cds-dab .cds-opt.selected .cds-opt-tick {
  border-color: var(--cds-lime);
  background: var(--cds-lime);
}
.cds-dab .cds-opt.selected .cds-opt-tick::after {
  content: "";
  width: 9px; height: 5px;
  border-left: 2.5px solid var(--cds-navy);
  border-bottom: 2.5px solid var(--cds-navy);
  transform: rotate(-45deg) translate(0px,-1px);
}

/* ==================== BUTTONS ==================== */
.cds-dab .cds-btn-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 26px;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,0.07);
}
.cds-dab .cds-btn {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 16px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border: none;
  border-radius: 11px;
  padding: 14px 26px;
  transition: transform 0.1s, box-shadow 0.18s, background 0.18s;
}
.cds-dab .cds-btn-primary {
  background: linear-gradient(135deg, var(--cds-lime), var(--cds-lime-2));
  color: var(--cds-navy);
  box-shadow: 0 10px 26px rgba(181,242,61,0.28);
}
.cds-dab .cds-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 14px 32px rgba(181,242,61,0.4); }
.cds-dab .cds-btn-cobalt {
  background: linear-gradient(135deg, var(--cds-cobalt), var(--cds-cobalt-2));
  color: var(--cds-white);
  box-shadow: 0 10px 26px rgba(22,71,232,0.32);
}
.cds-dab .cds-btn-cobalt:hover { transform: translateY(-2px); }
.cds-dab .cds-btn-secondary {
  background: transparent;
  color: var(--cds-gray-1);
  border: 1px solid rgba(255,255,255,0.16);
}
.cds-dab .cds-btn-secondary:hover { border-color: var(--cds-lime); color: var(--cds-white); }
.cds-dab .cds-btn[disabled] { opacity: 0.4; cursor: not-allowed; transform: none; }
.cds-dab .cds-error {
  display: none;
  color: var(--cds-danger);
  font-size: 13px;
  font-weight: 600;
  margin-top: 14px;
}
.cds-dab .cds-error.show { display: block; }

/* ==================== LEAD GATE ==================== */
.cds-dab .cds-ghl-wrap {
  background: var(--cds-white);
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(181,242,61,0.3);
}
.cds-dab .cds-ghl-wrap iframe {
  width: 100%;
  min-height: 540px;
  border: none;
  display: block;
  background: #fff;
}
.cds-dab .cds-gate-perks {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin-bottom: 20px;
}
.cds-dab .cds-gate-perk {
  text-align: center;
  padding: 14px 10px;
  background: rgba(181,242,61,0.05);
  border: 1px solid rgba(181,242,61,0.18);
  border-radius: 11px;
}
.cds-dab .cds-gate-perk-icon { font-size: 22px; margin-bottom: 5px; }
.cds-dab .cds-gate-perk-text {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 12.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--cds-gray-1);
  line-height: 1.3;
}

/* ==================== LOADING ==================== */
.cds-dab .cds-loading { display: none; text-align: center; padding: 60px 20px; }
.cds-dab .cds-loading.show { display: block; }
.cds-dab .cds-loading-ring { margin: 0 auto 22px; width: 92px; height: 92px; }
.cds-dab .cds-loading-ring svg { animation: cds-dab-spin 1.1s linear infinite; }
@keyframes cds-dab-spin { to { transform: rotate(360deg); } }
.cds-dab .cds-loading-title { font-size: 26px; margin-bottom: 8px; }
.cds-dab .cds-loading-msg { font-size: 14px; color: var(--cds-lime); font-weight: 600; min-height: 20px; }

/* ==================== RESULTS ==================== */
.cds-dab .cds-results { display: none; }
.cds-dab .cds-results.show { display: block; }
.cds-dab .cds-result-header {
  text-align: center;
  padding: 8px 0 26px;
}
.cds-dab .cds-result-eyebrow {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 10px;
}
.cds-dab .cds-result-title { font-size: 40px; margin-bottom: 6px; }
.cds-dab .cds-result-meta { font-size: 14px; color: var(--cds-gray-2); }

.cds-dab .cds-stage-hero {
  text-align: center;
  padding: 30px 26px;
  margin-bottom: 18px;
  background: linear-gradient(135deg, rgba(22,71,232,0.2), rgba(181,242,61,0.08));
  border: 1px solid rgba(181,242,61,0.3);
  border-radius: 16px;
}
.cds-dab .cds-stage-hero-label {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cds-gray-1);
  margin-bottom: 8px;
}
.cds-dab .cds-stage-hero-name { font-size: 44px; color: var(--cds-lime); margin-bottom: 6px; }
.cds-dab .cds-stage-hero-age {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--cds-soft-blue);
}

.cds-dab .cds-result-section {
  background: linear-gradient(135deg, var(--cds-navy-2), var(--cds-navy));
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 14px;
  padding: 24px 26px;
  margin-bottom: 14px;
}
.cds-dab .cds-result-section h3 {
  font-size: 22px;
  margin-bottom: 12px;
  color: var(--cds-white);
}
.cds-dab .cds-result-section p { font-size: 14.5px; color: var(--cds-gray-1); line-height: 1.65; }
.cds-dab .cds-result-section p + p { margin-top: 10px; }
.cds-dab .cds-focus-list { display: grid; gap: 9px; margin-top: 4px; }
.cds-dab .cds-focus-item {
  display: flex;
  gap: 11px;
  font-size: 14px;
  color: var(--cds-gray-1);
  line-height: 1.55;
  padding: 12px 14px;
  background: rgba(181,242,61,0.05);
  border: 1px solid rgba(181,242,61,0.16);
  border-radius: 10px;
}
.cds-dab .cds-focus-icon { flex-shrink: 0; }

/* ==================== SCHEDULE ==================== */
.cds-dab .cds-schedule {
  background: linear-gradient(135deg, rgba(22,71,232,0.16), rgba(181,242,61,0.05));
  border: 1px solid rgba(181,242,61,0.3);
  border-radius: 16px;
  padding: 28px 26px;
  margin-bottom: 14px;
}
.cds-dab .cds-schedule-eyebrow {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 6px;
}
.cds-dab .cds-schedule-title { font-size: 28px; margin-bottom: 4px; }
.cds-dab .cds-schedule-sub { font-size: 13.5px; color: var(--cds-gray-2); margin-bottom: 20px; }
.cds-dab .cds-times-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin-bottom: 18px;
}
.cds-dab .cds-time-card {
  text-align: center;
  padding: 16px 12px;
  background: var(--cds-navy);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  border-top: 2px solid var(--cds-lime);
}
.cds-dab .cds-time-days {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 17px;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--cds-white);
  margin-bottom: 2px;
}
.cds-dab .cds-time-hour {
  font-size: 19px;
  font-weight: 700;
  color: var(--cds-lime);
  font-family: 'Barlow Condensed', sans-serif;
}
.cds-dab .cds-time-star {
  color: var(--cds-soft-blue);
  font-size: 14px;
  vertical-align: super;
  margin-left: 1px;
}
.cds-dab .cds-time-tag {
  font-size: 11px;
  color: var(--cds-gray-2);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-top: 3px;
}
.cds-dab .cds-time-note {
  font-size: 12.5px;
  color: var(--cds-soft-blue);
  font-style: italic;
  margin-bottom: 18px;
}
.cds-dab .cds-dates-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 20px; }
.cds-dab .cds-date-card {
  padding: 14px 16px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 11px;
}
.cds-dab .cds-date-month {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 16px;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 6px;
}
.cds-dab .cds-date-line { font-size: 13px; color: var(--cds-gray-1); line-height: 1.7; }
.cds-dab .cds-date-line strong { color: var(--cds-white); }
.cds-dab .cds-schedule-cta {
  display: block;
  text-align: center;
  text-decoration: none;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 18px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  background: linear-gradient(135deg, var(--cds-lime), var(--cds-lime-2));
  color: var(--cds-navy);
  padding: 17px 24px;
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(181,242,61,0.3);
  transition: transform 0.12s;
}
.cds-dab .cds-schedule-cta:hover { transform: translateY(-2px); }
.cds-dab .cds-schedule-note {
  text-align: center;
  font-size: 12.5px;
  color: var(--cds-gray-2);
  margin-top: 12px;
}

/* action bar */
.cds-dab .cds-action-bar {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin-bottom: 22px;
}
.cds-dab .cds-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: transparent;
  color: var(--cds-gray-1);
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 10px;
  padding: 11px 18px;
  transition: border-color 0.18s, color 0.18s;
}
.cds-dab .cds-action-btn:hover { border-color: var(--cds-lime); color: var(--cds-white); }
.cds-dab .cds-action-btn-primary {
  background: var(--cds-lime);
  color: var(--cds-navy);
  border-color: var(--cds-lime);
}

/* ==================== CROSS-SELL ==================== */
.cds-dab .cds-crosssell { padding: 24px 0 14px; }
.cds-dab .cds-crosssell-header { text-align: center; margin-bottom: 20px; }
.cds-dab .cds-crosssell-eyebrow {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cds-lime);
  margin-bottom: 6px;
}
.cds-dab .cds-crosssell-title { font-size: 30px; margin-bottom: 4px; }
.cds-dab .cds-crosssell-sub { font-size: 14px; color: var(--cds-gray-2); }
.cds-dab .cds-crosssell-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; }
.cds-dab .cds-crosssell-card {
  display: block;
  text-decoration: none;
  padding: 22px 20px;
  background: linear-gradient(135deg, var(--cds-navy-2), var(--cds-navy));
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 14px;
  transition: transform 0.14s, border-color 0.18s;
}
.cds-dab .cds-crosssell-card:hover { transform: translateY(-3px); border-color: rgba(181,242,61,0.35); }
.cds-dab .cds-crosssell-tag {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--cds-lime);
}
.cds-dab .cds-crosssell-headline {
  font-size: 18px;
  color: var(--cds-white);
  margin: 9px 0 7px;
}
.cds-dab .cds-crosssell-text { font-size: 13px; color: var(--cds-gray-1); line-height: 1.55; margin-bottom: 12px; }
.cds-dab .cds-crosssell-cta {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 14px;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--cds-cobalt-2);
}

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

/* ==================== SAVE HTML BUTTON ==================== */
.cds-dab .cds-savehtml-row { text-align: center; margin-top: 8px; }
.cds-dab .cds-savehtml-btn {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: transparent;
  color: var(--cds-gray-2);
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 9px;
  padding: 10px 20px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.cds-dab .cds-savehtml-btn:hover { border-color: var(--cds-lime); color: var(--cds-white); }

/* ==================== RESPONSIVE ==================== */
@media (max-width: 1024px) {
  .cds-dab .cds-hero-grid { grid-template-columns: 1fr; gap: 28px; }
  .cds-dab .cds-hero-title { font-size: 46px; }
  .cds-dab .cds-crosssell-grid { grid-template-columns: 1fr; }
  .cds-dab .cds-times-grid { grid-template-columns: 1fr; }
  .cds-dab .cds-flag-grid,
  .cds-dab .cds-pillar-grid,
  .cds-dab .cds-dates-grid,
  .cds-dab .cds-gate-perks { grid-template-columns: 1fr; }
  .cds-dab .cds-hero-promise { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .cds-dab .cds-hero-title { font-size: 38px; }
  .cds-dab .cds-card { padding: 26px 20px; }
  .cds-dab .cds-section-title { font-size: 26px; }
  .cds-dab .cds-result-title { font-size: 32px; }
  .cds-dab .cds-stage-hero-name { font-size: 34px; }
  .cds-dab .cds-stage-row { grid-template-columns: 1fr; }
}

/* ==================== PRINT ==================== */
@media print {
  .cds-dab { background: #fff !important; color: #111 !important; }
  .cds-dab .cds-hero,
  .cds-dab .cds-section-block,
  .cds-dab .cds-loading,
  .cds-dab .cds-crosssell,
  .cds-dab .cds-footer,
  .cds-dab .cds-action-bar,
  .cds-dab .cds-savehtml-row { display: none !important; }
  .cds-dab .cds-results { display: block !important; }
  .cds-dab .cds-result-section,
  .cds-dab .cds-stage-hero,
  .cds-dab .cds-schedule {
    background: #fff !important;
    border: 1px solid #ccc !important;
    page-break-inside: avoid;
  }
  .cds-dab .cds-result-title,
  .cds-dab .cds-result-section h3,
  .cds-dab .cds-result-section p,
  .cds-dab .cds-stage-desc,
  .cds-dab .cds-focus-item,
  .cds-dab .cds-date-line { color: #111 !important; }
  .cds-dab .cds-result-eyebrow,
  .cds-dab .cds-stage-hero-name,
  .cds-dab .cds-schedule-eyebrow,
  .cds-dab .cds-date-month { color: #1647e8 !important; }
  @page { margin: 0.5in; }
}
</style>

<div class="cds-dab" id="cds-dab-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>
            Youth Athlete Development Blueprint
          </div>
          <h1 class="cds-hero-title">
            <span class="cds-hero-title-top">Free Workouts Are Cool.</span>
            <span class="cds-accent">Knowing Your Why Is Better.</span>
          </h1>
          <div class="cds-hero-lead">That's Why We Give You The Science.</div>
          <p class="cds-hero-sub">
            Most parents are guessing. They sign their athlete up for whatever is
            close, whatever is cheap or whatever a friend recommended. This free
            Blueprint shows you the science behind every workout your athlete will
            ever do and tells you exactly what stage of development they are in
            right now. Train with us or not. This information is yours.
          </p>
          <div class="cds-hero-promise">
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-check></span></span> The 5 Stages Of Youth Development</div>
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-target></span></span> The 7 Red Flags Of Wrong Training</div>
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-diamond></span></span> Why A Skill Coach Is Not Enough</div>
            <div class="cds-promise-item"><span class="cds-promise-icon"><span class=cds-ei-flame></span></span> Your Athlete's Development Stage</div>
          </div>
          <div class="cds-trust-row">
            <span class="cds-trust-pill">100% Free</span>
            <span class="cds-trust-pill">No Cost To Unlock</span>
            <span class="cds-trust-pill">Built By A Former NFL Player</span>
            <span class="cds-trust-pill">Summer 2026 Classes Open</span>
          </div>

          <!-- VIDEO · swap the placeholder div for an <iframe> when the video is live -->
          <div class="cds-video-wrap">
            <div class="cds-video-label">▶ Coach Tim · Why I Do This</div>
            <div class="cds-video-frame" id="cds-video-frame">
              <iframe
                src="https://www.youtube.com/embed/lmn-_6J1gno"
                title="Youth Athletic Sports Training &amp; Mindset Development"
                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
                referrerpolicy="strict-origin-when-cross-origin"
                allowfullscreen></iframe>
            </div>
          </div>
        </div>

        <!-- COACH TIM CARD · credential standard applied -->
        <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">
            Performance Specialist · CDS Founder<br>
            Creative Dynamic Sports · Cumming, GA
          </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 Background</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>

  <!-- ==================== TOOL FLOW ==================== -->
  <section class="cds-section-block">
    <div class="cds-inner">

      <!-- ===== STEP 1 · THE 5 STAGES ===== -->
      <div class="cds-card cds-step-screen" data-screen="1">
        <div class="cds-progress">
          <div class="cds-progress-dots">
            <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>
          <span class="cds-progress-label" id="cds-progress-label">Step 1 of 5</span>
        </div>
        <div class="cds-section-num">The Blueprint · Part 01</div>
        <h2 class="cds-section-title">The 5 Stages Of Youth Athletic Development</h2>
        <p class="cds-section-sub">
          Age is not the same as development stage. An 11 year old and a 14 year
          old can be in the exact same stage. Two 13 year olds can be in completely
          different ones. Training the stage, not the birthday, is the difference
          between an athlete who grows and one who stalls.
        </p>
        <div class="cds-stage-grid">
          <div class="cds-stage-row">
            <div class="cds-stage-badge">1</div>
            <div>
              <div class="cds-stage-name">The Late Bloomer</div>
              <div class="cds-stage-age">Foundation Stage</div>
              <div class="cds-stage-desc">
                The body has not caught up to the desire to compete. This athlete
                needs coordination, body control and confidence built first. Push
                load too early here and you build frustration, not performance.
              </div>
            </div>
          </div>
          <div class="cds-stage-row">
            <div class="cds-stage-badge">2</div>
            <div>
              <div class="cds-stage-name">The Fast Grower</div>
              <div class="cds-stage-age">Coordination Stage</div>
              <div class="cds-stage-desc">
                Growing quickly and often clumsy because of it. Limbs are longer
                than the control over them. The work here is re-teaching movement
                mechanics so the athlete owns their new frame.
              </div>
            </div>
          </div>
          <div class="cds-stage-row">
            <div class="cds-stage-badge">3</div>
            <div>
              <div class="cds-stage-name">The Figuring-It-Out Athlete</div>
              <div class="cds-stage-age">Skill Stage</div>
              <div class="cds-stage-desc">
                Movement basics are in place but the athlete has not connected them
                to real game speed. This stage builds the bridge from drill to
                performance so the work shows up on the field.
              </div>
            </div>
          </div>
          <div class="cds-stage-row">
            <div class="cds-stage-badge">4</div>
            <div>
              <div class="cds-stage-name">The Competitive Performer</div>
              <div class="cds-stage-age">Performance Stage</div>
              <div class="cds-stage-desc">
                The foundation is solid and the athlete is ready for real training
                load. Strength, speed and power can be developed aggressively here
                because the body can handle and absorb it.
              </div>
            </div>
          </div>
          <div class="cds-stage-row">
            <div class="cds-stage-badge">5</div>
            <div>
              <div class="cds-stage-name">The Comeback Athlete</div>
              <div class="cds-stage-age">Rebuild Stage</div>
              <div class="cds-stage-desc">
                Returning from injury, a layoff or a confidence dip. This athlete
                needs a rebuild that restores movement quality and trust in the
                body before chasing performance numbers again.
              </div>
            </div>
          </div>
        </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 · THE 7 RED FLAGS ===== -->
      <div class="cds-card cds-step-screen" data-screen="2" style="display:none;">
        <div class="cds-progress">
          <div class="cds-progress-dots">
            <div class="cds-step-dot done" data-dot="1"></div>
            <div class="cds-step-dot active" 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>
          <span class="cds-progress-label">Step 2 of 5</span>
        </div>
        <div class="cds-section-num">The Blueprint · Part 02</div>
        <h2 class="cds-section-title">7 Red Flags Your Athlete Is Training Wrong</h2>
        <p class="cds-section-sub">
          These are the signs most parents miss because they look like effort or
          a rough patch. Read all 7. If you spot two or more in your athlete, the
          training they are doing is working against their development.
        </p>
        <div class="cds-flag-grid">
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>They train hard but never seem to get faster or more explosive.</span></div>
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>They are sore in joints and soft tissue, not just muscles.</span></div>
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>One side of their body moves clearly better than the other.</span></div>
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>They lose their first-step burst before they lose endurance.</span></div>
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>They specialized in one sport early and now seem burned out.</span></div>
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>Their landing and deceleration look heavy, stiff or uncontrolled.</span></div>
          <div class="cds-flag-item"><span class="cds-flag-mark">✕</span>
            <span>They are doing the same training a grown athlete would do.</span></div>
        </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 · SKILL COACH GAP + PILLARS ===== -->
      <div class="cds-card cds-step-screen" data-screen="3" style="display:none;">
        <div class="cds-progress">
          <div class="cds-progress-dots">
            <div class="cds-step-dot done" data-dot="1"></div>
            <div class="cds-step-dot done" data-dot="2"></div>
            <div class="cds-step-dot active" data-dot="3"></div>
            <div class="cds-step-dot" data-dot="4"></div>
            <div class="cds-step-dot" data-dot="5"></div>
          </div>
          <span class="cds-progress-label">Step 3 of 5</span>
        </div>
        <div class="cds-section-num">The Blueprint · Part 03</div>
        <h2 class="cds-section-title">The Skill Coach Gap</h2>
        <p class="cds-section-sub">
          A hitting coach, a throwing coach or a position coach is valuable. But
          here is what most parents are never told.
        </p>
        <div class="cds-gap-block">
          <p>
            A skill coach builds the sport skill. They do not build the athlete
            underneath the skill. A young athlete can have a great swing or a
            clean throwing motion and still move poorly, decelerate badly and lack
            the foundation to stay healthy and explosive.
          </p>
          <p>
            Skill sits on top of athleticism. When the athletic foundation is
            missing, the skill has a ceiling and the injury risk has a floor. The
            athletes who pull away are the ones who build the engine first, then
            sharpen the skill on top of it. That foundation is what we teach.
          </p>
        </div>
        <h3 style="font-size:24px;margin:24px 0 6px;">The 5 Functional Dynamics Movement Pillars</h3>
        <p class="cds-section-sub" style="margin-bottom:16px;">
          This is the foundation every CDS athlete builds. Skill goes on top of these.
        </p>
        <div class="cds-pillar-grid">
          <div class="cds-pillar">
            <div class="cds-pillar-name">1 · Body Control</div>
            <div class="cds-pillar-desc">Owning posture, balance and position so the body does what the athlete tells it to.</div>
          </div>
          <div class="cds-pillar">
            <div class="cds-pillar-name">2 · Deceleration</div>
            <div class="cds-pillar-desc">Stopping, landing and absorbing force. The most overlooked driver of speed and health.</div>
          </div>
          <div class="cds-pillar">
            <div class="cds-pillar-name">3 · Acceleration</div>
            <div class="cds-pillar-desc">Producing force into the ground to create a fast, powerful first step.</div>
          </div>
          <div class="cds-pillar">
            <div class="cds-pillar-name">4 · Coordination</div>
            <div class="cds-pillar-desc">Linking the upper and lower body so movement is efficient and repeatable.</div>
          </div>
          <div class="cds-pillar" style="grid-column:1 / -1;">
            <div class="cds-pillar-name">5 · Movement Confidence</div>
            <div class="cds-pillar-desc">The athlete trusts their body in space. Confidence is built through reps, not pep talks.</div>
          </div>
        </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">Take The Diagnostic →</button>
        </div>
      </div>

      <!-- ===== STEP 4 · DIAGNOSTIC ===== -->
      <div class="cds-card cds-step-screen" data-screen="4" style="display:none;">
        <div class="cds-progress">
          <div class="cds-progress-dots">
            <div class="cds-step-dot done" data-dot="1"></div>
            <div class="cds-step-dot done" data-dot="2"></div>
            <div class="cds-step-dot done" data-dot="3"></div>
            <div class="cds-step-dot active" data-dot="4"></div>
            <div class="cds-step-dot" data-dot="5"></div>
          </div>
          <span class="cds-progress-label">Step 4 of 5</span>
        </div>
        <div class="cds-section-num">The Diagnostic · 3 Questions</div>
        <h2 class="cds-section-title">Find Your Athlete's Development Stage</h2>
        <p class="cds-section-sub">
          Three quick questions. Answer them the way your athlete actually is
          right now, not the way you hope they are. Honesty here is what makes the
          result useful.
        </p>
        <div class="cds-hint">
          <span class=cds-ei-diamond></span> There are no wrong answers. Every stage has a clear path forward.
        </div>

        <div class="cds-q-block" data-q="q1">
          <div class="cds-q-label"><span class="cds-q-num">Q1</span>How would you describe your athlete's movement right now?</div>
          <div class="cds-opt-grid">
            <button class="cds-opt" data-q="q1" data-val="late">
              <span class="cds-opt-tick"></span>Still building basic coordination and body control</button>
            <button class="cds-opt" data-q="q1" data-val="grow">
              <span class="cds-opt-tick"></span>Recently grew fast and looks a bit clumsy or awkward</button>
            <button class="cds-opt" data-q="q1" data-val="figure">
              <span class="cds-opt-tick"></span>Moves fine in drills but it does not show up in games</button>
            <button class="cds-opt" data-q="q1" data-val="perform">
              <span class="cds-opt-tick"></span>Moves well and looks ready for real training load</button>
            <button class="cds-opt" data-q="q1" data-val="comeback">
              <span class="cds-opt-tick"></span>Coming back from an injury, layoff or confidence dip</button>
          </div>
        </div>

        <div class="cds-q-block" data-q="q2">
          <div class="cds-q-label"><span class="cds-q-num">Q2</span>What is holding your athlete back the most?</div>
          <div class="cds-opt-grid">
            <button class="cds-opt" data-q="q2" data-val="late">
              <span class="cds-opt-tick"></span>Confidence and comfort being athletic</button>
            <button class="cds-opt" data-q="q2" data-val="grow">
              <span class="cds-opt-tick"></span>Control over a body that changed quickly</button>
            <button class="cds-opt" data-q="q2" data-val="figure">
              <span class="cds-opt-tick"></span>Turning practice ability into game performance</button>
            <button class="cds-opt" data-q="q2" data-val="perform">
              <span class="cds-opt-tick"></span>Needs more strength, speed and power to compete</button>
            <button class="cds-opt" data-q="q2" data-val="comeback">
              <span class="cds-opt-tick"></span>Getting back to where they were before a setback</button>
          </div>
        </div>

        <div class="cds-q-block" data-q="q3">
          <div class="cds-q-label"><span class="cds-q-num">Q3</span>What is your main goal for them this season?</div>
          <div class="cds-opt-grid">
            <button class="cds-opt" data-q="q3" data-val="late">
              <span class="cds-opt-tick"></span>Build a foundation and enjoy being an athlete</button>
            <button class="cds-opt" data-q="q3" data-val="grow">
              <span class="cds-opt-tick"></span>Move clean and coordinated again</button>
            <button class="cds-opt" data-q="q3" data-val="figure">
              <span class="cds-opt-tick"></span>Finally see the training carry over to games</button>
            <button class="cds-opt" data-q="q3" data-val="perform">
              <span class="cds-opt-tick"></span>Get measurably faster, stronger and more explosive</button>
            <button class="cds-opt" data-q="q3" data-val="comeback">
              <span class="cds-opt-tick"></span>Return strong, healthy and confident</button>
          </div>
        </div>

        <div class="cds-error" id="cds-q-error">Please answer all 3 questions to continue.</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">See My Athlete's Stage →</button>
        </div>
      </div>

      <!-- ===== STEP 5 · LEAD GATE ===== -->
      <div class="cds-card cds-step-screen" data-screen="5" style="display:none;">
        <div class="cds-progress">
          <div class="cds-progress-dots">
            <div class="cds-step-dot done" data-dot="1"></div>
            <div class="cds-step-dot done" data-dot="2"></div>
            <div class="cds-step-dot done" data-dot="3"></div>
            <div class="cds-step-dot done" data-dot="4"></div>
            <div class="cds-step-dot active" data-dot="5"></div>
          </div>
          <span class="cds-progress-label">Step 5 of 5</span>
        </div>
        <div class="cds-section-num">Unlock Your Free Result</div>
        <h2 class="cds-section-title">Your Athlete's Stage Is Ready</h2>
        <p class="cds-section-sub">
          Coach Tim has your athlete's development stage and the exact training
          focus that fits it. Drop your info below and it unlocks instantly. No
          cost. This is yours to keep whether you ever train with us or not.
        </p>
        <div class="cds-gate-perks">
          <div class="cds-gate-perk">
            <div class="cds-gate-perk-icon"><span class=cds-ei-target></span></div>
            <div class="cds-gate-perk-text">Your Athlete's<br>Development Stage</div>
          </div>
          <div class="cds-gate-perk">
            <div class="cds-gate-perk-icon"><span class=cds-ei-check></span></div>
            <div class="cds-gate-perk-text">The Right Training<br>Focus For That Stage</div>
          </div>
          <div class="cds-gate-perk">
            <div class="cds-gate-perk-icon"><span class=cds-ei-flame></span></div>
            <div class="cds-gate-perk-text">Summer 2026<br>Class Schedule</div>
          </div>
        </div>
        <div class="cds-ghl-wrap">
          <iframe
            src="about:blank"
            id="inline-8zrU29jLl8ZDYLFsA09W"
            data-layout="{'id':'INLINE'}"
            data-trigger-type="alwaysShow"
            data-trigger-value=""
            data-activation-type="alwaysActivated"
            data-activation-value=""
            data-deactivation-type="neverDeactivate"
            data-deactivation-value=""
            data-form-name="CDS Youth Athlete Development Blueprint - Lead Gate"
            data-height="523"
            data-layout-iframe-id="inline-8zrU29jLl8ZDYLFsA09W"
            data-form-id="8zrU29jLl8ZDYLFsA09W"
            title="CDS Youth Athlete Development Blueprint - Lead Gate">
          </iframe>
        </div>
        <div class="cds-btn-row" style="border-top:none;padding-top:14px;">
          <button class="cds-btn cds-btn-secondary" data-action="back" data-from="5">← Back</button>
          <span></span>
        </div>
      </div>

      <!-- ===== LOADING ===== -->
      <div class="cds-loading" id="cds-loading">
        <div class="cds-loading-ring">
          <svg viewBox="0 0 100 100" width="92" height="92">
            <circle cx="50" cy="50" r="42" fill="none" stroke="rgba(255,255,255,0.07)" 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 Reading Your Answers...</h2>
        <p class="cds-loading-msg" id="cds-loading-msg">Reviewing movement profile</p>
      </div>

    </div>
  </section>

  <!-- ==================== RESULTS ==================== -->
  <div class="cds-results" id="cds-results">
    <div class="cds-inner">
      <div class="cds-result-header">
        <div class="cds-result-eyebrow">CDS Youth Athlete Development Blueprint</div>
        <h1 class="cds-result-title">Your Athlete's Development Report</h1>
        <div class="cds-result-meta">Built by Coach Tim Buckley · Creative Dynamic Sports</div>
      </div>

      <div class="cds-action-bar">
        <button class="cds-action-btn" id="cds-print-btn" type="button">
          <svg width="17" height="17" 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 Report
        </button>
        <button class="cds-action-btn cds-action-btn-primary" id="cds-save-btn" type="button">
          <svg width="17" height="17" 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>

      <!-- stage hero -->
      <div class="cds-stage-hero">
        <div class="cds-stage-hero-label">Your Athlete's Current Stage</div>
        <div class="cds-stage-hero-name" id="cds-res-stage-name">Stage</div>
        <div class="cds-stage-hero-age" id="cds-res-stage-age">Development Stage</div>
      </div>

      <!-- what this stage means -->
      <div class="cds-result-section">
        <h3>What This Stage Means</h3>
        <p id="cds-res-meaning"></p>
      </div>

      <!-- the right training focus -->
      <div class="cds-result-section">
        <h3>The Right Training Focus Right Now</h3>
        <p id="cds-res-focus-intro" style="margin-bottom:14px;"></p>
        <div class="cds-focus-list" id="cds-res-focus-list"></div>
      </div>

      <!-- what to avoid -->
      <div class="cds-result-section">
        <h3>What To Avoid At This Stage</h3>
        <p id="cds-res-avoid"></p>
      </div>

      <!-- coach tim note -->
      <div class="cds-result-section" style="border-color:rgba(181,242,61,0.3);">
        <h3>A Note From Coach Tim</h3>
        <p id="cds-res-note"></p>
        <p style="margin-top:14px;color:var(--cds-lime);font-weight:600;font-style:italic;">
          Tim Buckley · Performance Specialist · Creative Dynamic Sports
        </p>
      </div>

      <!-- SCHEDULE -->
      <div class="cds-schedule">
        <div class="cds-schedule-eyebrow"><span class=cds-ei-flame></span> Summer 2026 · Now Enrolling</div>
        <h2 class="cds-schedule-title">Functional Dynamics Summer Classes</h2>
        <p class="cds-schedule-sub">Introduction to Sports Performance · Youth Athletes Ages 8 to 14 · Cumming, GA</p>

        <div class="cds-times-grid">
          <div class="cds-time-card">
            <div class="cds-time-days">Mon / Wed</div>
            <div class="cds-time-hour">9:00 AM</div>
            <div class="cds-time-tag">Morning Class</div>
          </div>
          <div class="cds-time-card">
            <div class="cds-time-days">Mon / Wed</div>
            <div class="cds-time-hour">5:35 - 6:20 PM</div>
            <div class="cds-time-tag">Evening Class</div>
          </div>
          <div class="cds-time-card">
            <div class="cds-time-days">Tue / Thu</div>
            <div class="cds-time-hour">5:35 - 6:20 PM</div>
            <div class="cds-time-tag">Evening Class</div>
          </div>
        </div>

        <div class="cds-time-note">Optional 5 to 10 minutes of extra work on most days.</div>

        <div class="cds-dates-grid">
          <div class="cds-date-card">
            <div class="cds-date-month">June Session</div>
            <div class="cds-date-line">
              <strong>Mon / Wed:</strong> June 1 to June 24<br>
              <strong>Tue / Thu:</strong> June 2 to June 25
            </div>
          </div>
          <div class="cds-date-card">
            <div class="cds-date-month">July Session</div>
            <div class="cds-date-line">
              <strong>Mon / Wed:</strong> June 29 to July 22<br>
              <strong>Tue / Thu:</strong> June 30 to July 23
            </div>
          </div>
        </div>

        <a class="cds-schedule-cta" href="https://cdscommunity.com/pages/functional-dynamics" target="_blank" rel="noopener">
          Enroll Your Athlete For Summer →
        </a>
        <div class="cds-schedule-note">Secure Stripe checkout · Space is limited</div>
      </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">Where You Go From Here</h2>
          <p class="cds-crosssell-sub">Three ways to put this Blueprint to work.</p>
        </div>
        <div class="cds-crosssell-grid">
          <a href="https://cdscommunity.com/pages/functional-dynamics" 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">Functional Dynamics</h3>
            <p class="cds-crosssell-text">In-person summer classes for ages 8 to 14 that build the foundation every athlete needs.</p>
            <span class="cds-crosssell-cta">View Summer Classes →</span>
          </a>
          <a href="https://cdscommunity.com/pages/athlete-performance-profile" 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">APP Evaluation</h3>
            <p class="cds-crosssell-text">The Athlete Performance Profile measures exactly where your athlete stands across every key metric.</p>
            <span class="cds-crosssell-cta">Book An APP Evaluation →</span>
          </a>
          <a href="https://cdscommunity.com/pages/cds-explosive-power-index" target="_blank" rel="noopener" class="cds-crosssell-card">
            <span class="cds-crosssell-tag"><span class=cds-ei-flame></span> Compete And Rank</span>
            <h3 class="cds-crosssell-headline">Explosive Power Index</h3>
            <p class="cds-crosssell-text">See how your athlete stacks up on the CDS leaderboard once they complete an APP Evaluation.</p>
            <span class="cds-crosssell-cta">View The Leaderboard →</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:creativedynamicsports@gmail.com"><span class=cds-ei-mail></span> creativedynamicsports@gmail.com</a>
        <span><span class=cds-ei-pin></span> Cumming, GA</span>
      </div>
      <button class="cds-restart" id="cds-restart">↻ Start The Blueprint Over</button>
      <div class="cds-savehtml-row">
        <button class="cds-savehtml-btn" id="cds-savehtml-btn" type="button">
          <svg width="15" height="15" 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 This Report As HTML
        </button>
      </div>
      <div class="cds-footer-legal">© Creative Dynamic Sports · All rights reserved.</div>
    </div>
  </footer>

</div>

<script src="https://link.msgsndr.com/js/form_embed.js"></script>
<script>
(function() {
  'use strict';

  var root = document.getElementById('cds-dab-root');
  if (!root) return;

  /* ---------- STATE ---------- */
  var state = { q1: null, q2: null, q3: null };
  var currentScreen = 1;
  var TOTAL_SCREENS = 5;

  /* ---------- STAGE CONTENT LIBRARY ---------- */
  var STAGES = {
    late: {
      name: 'The Late Bloomer',
      stage: 'Foundation Stage',
      meaning: 'Your athlete is in the Foundation Stage. The drive to compete is there but the body has not fully caught up yet. This is completely normal and it is not a weakness. It simply means the smartest work right now is building coordination, body control and confidence before any heavy training load. Athletes who get a real foundation here often pass the kids who were pushed too early.',
      focusIntro: 'At this stage the goal is to build the athlete underneath the sport. The training should feel like skill-building and confidence-building, not grinding.',
      focus: [
        'Coordination and body control work through bodyweight movement',
        'Balance, posture and basic landing mechanics',
        'Fun, varied movement that keeps them wanting to come back',
        'Confidence reps so they trust their body in space'
      ],
      avoid: 'Avoid heavy strength loading, adult-style training programs and early specialization in one sport. Pushing performance numbers before the foundation exists builds frustration and injury risk, not athletes.',
      note: 'A Late Bloomer is not behind. They are early in the build. The parents who win here are the ones patient enough to let the foundation get strong first. Give your athlete that and the performance shows up later with a much higher ceiling. This is exactly the work our Functional Dynamics summer classes are built for.'
    },
    grow: {
      name: 'The Fast Grower',
      stage: 'Coordination Stage',
      meaning: 'Your athlete is in the Coordination Stage. They have grown quickly and their control has not caught up to their new frame yet. The clumsiness you are seeing is real and it is temporary. Their arms and legs are longer than the brain-body connection that runs them. The fix is re-teaching movement so they own the body they have now.',
      focusIntro: 'At this stage the goal is to rebuild clean movement mechanics around the athlete\'s new size so coordination catches up.',
      focus: [
        'Movement re-patterning for the longer levers they now have',
        'Deceleration and landing control to protect growing joints',
        'Coordination drills that re-link the upper and lower body',
        'Posture and body awareness work to restore control'
      ],
      avoid: 'Avoid loading heavy strength on top of poor movement and avoid assuming the awkwardness will just fix itself. Untrained, a growth spurt can lock in bad movement habits. Trained, it becomes a performance jump.',
      note: 'A growth spurt is a window. Handled right it is one of the biggest opportunities to upgrade an athlete. Handled wrong it is where bad habits and injury risk get built in. Our Functional Dynamics summer classes are designed to re-teach clean movement during exactly this stage.'
    },
    figure: {
      name: 'The Figuring-It-Out Athlete',
      stage: 'Skill Stage',
      meaning: 'Your athlete is in the Skill Stage. The movement basics are in place but they have not connected them to real game speed yet. You see it as a kid who looks good in drills and practice but does not translate it when the game is live. The work now is building the bridge from drill to performance.',
      focusIntro: 'At this stage the goal is carryover. The training has to look more like the chaos and speed of a real game.',
      focus: [
        'Reactive and decision-based drills run at game speed',
        'Change of direction and acceleration under pressure',
        'Connecting clean mechanics to competitive situations',
        'Building the athlete\'s ability to perform, not just practice'
      ],
      avoid: 'Avoid endless isolated drills that never get tested at game speed. Drill ability without carryover is the most common plateau in youth sports. Your athlete needs the bridge built.',
      note: 'This is the stage where a lot of athletes quietly stall. They are working but it is not showing up where it counts. The athletes who break through are the ones whose training finally looks like the game. That bridge is a core part of what we coach at CDS.'
    },
    perform: {
      name: 'The Competitive Performer',
      stage: 'Performance Stage',
      meaning: 'Your athlete is in the Performance Stage. The foundation is solid, the movement is clean and the body is ready to absorb real training load. This is where strength, speed and power can be developed aggressively because the athlete has earned the right to train hard. The opportunity now is making sure the training is actually measured and targeted.',
      focusIntro: 'At this stage the goal is targeted performance development built on data, not guesswork.',
      focus: [
        'Strength, speed and power development with real load',
        'Targeted work on the athlete\'s specific weak links',
        'Measured progress so training decisions are based on data',
        'Sport-specific power and change of direction development'
      ],
      avoid: 'Avoid generic group programs that treat every athlete the same and avoid training without measuring. A Performance Stage athlete who trains without data is leaving real gains on the table.',
      note: 'This is the stage where the right training produces visible jumps. The athletes who maximize it are the ones training off real numbers. An APP Evaluation gives you that data foundation so every session is targeted. This is where CDS can move the needle the most.'
    },
    comeback: {
      name: 'The Comeback Athlete',
      stage: 'Rebuild Stage',
      meaning: 'Your athlete is in the Rebuild Stage. They are coming back from an injury, a layoff or a dip in confidence. The most important thing to understand is that you cannot skip straight back to where they were. The body and the confidence both need to be rebuilt in the right order, and rushing that is how setbacks turn into recurring problems.',
      focusIntro: 'At this stage the goal is a smart rebuild that restores movement quality and trust before chasing performance.',
      focus: [
        'Restoring clean, symmetrical movement on both sides',
        'Rebuilding control and confidence before adding intensity',
        'A progression that earns load instead of forcing it',
        'Reducing re-injury risk through quality movement'
      ],
      avoid: 'Avoid rushing back to full intensity and avoid comparing them to where they were before the setback. A rebuild done in the wrong order is the most common cause of a second injury.',
      note: 'A comeback handled with patience and a real plan can leave an athlete stronger and more durable than before the setback. The key is rebuilding in the right order. That measured, movement-first approach is exactly how we work with athletes at CDS.'
    }
  };

  /* ---------- LOADING MESSAGES ---------- */
  var LOADING_MSGS = [
    'Reviewing movement profile',
    'Matching answers to development stage',
    'Building the training focus',
    'Finalizing Coach Tim\'s notes'
  ];

  /* ---------- NAVIGATION ---------- */
  function showScreen(n) {
    var screens = root.querySelectorAll('.cds-step-screen');
    for (var i = 0; i < screens.length; i++) {
      screens[i].style.display = (parseInt(screens[i].getAttribute('data-screen'), 10) === n) ? '' : 'none';
    }
    currentScreen = n;
    var label = document.getElementById('cds-progress-label');
    if (label) label.textContent = 'Step ' + n + ' of ' + TOTAL_SCREENS;
    try { root.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) { window.scrollTo(0, 0); }
  }

  /* ---------- DIAGNOSTIC OPTION SELECT ---------- */
  root.addEventListener('click', function(e) {
    var opt = e.target.closest('.cds-opt');
    if (!opt) return;
    var q = opt.getAttribute('data-q');
    var val = opt.getAttribute('data-val');
    var siblings = root.querySelectorAll('.cds-opt[data-q="' + q + '"]');
    for (var i = 0; i < siblings.length; i++) siblings[i].classList.remove('selected');
    opt.classList.add('selected');
    state[q] = val;
    var err = document.getElementById('cds-q-error');
    if (err) err.classList.remove('show');
  });

  /* ---------- NEXT / BACK ---------- */
  root.addEventListener('click', function(e) {
    var btn = e.target.closest('[data-action]');
    if (!btn) return;
    var action = btn.getAttribute('data-action');
    var from = parseInt(btn.getAttribute('data-from'), 10);

    if (action === 'back') {
      showScreen(from - 1);
      return;
    }

    if (action === 'next') {
      // diagnostic validation on step 4
      if (from === 4) {
        if (!state.q1 || !state.q2 || !state.q3) {
          var err = document.getElementById('cds-q-error');
          if (err) err.classList.add('show');
          return;
        }
      }
      var nextScreen = from + 1;
      showScreen(nextScreen);
      // arm the lead gate when arriving at step 5
      if (nextScreen === 5 && typeof window.armGhlSubmissionListener === 'function') {
        window.armGhlSubmissionListener();
      }
    }
  });

  /* ---------- STAGE RESOLVER (rule-based · no API) ---------- */
  function resolveStage() {
    var tally = {};
    [state.q1, state.q2, state.q3].forEach(function(v) {
      if (!v) return;
      tally[v] = (tally[v] || 0) + 1;
    });
    // most-picked answer wins · Q1 (movement) breaks ties
    var best = state.q1, bestCount = -1;
    Object.keys(tally).forEach(function(k) {
      if (tally[k] > bestCount) { bestCount = tally[k]; best = k; }
    });
    // tie at 1-1-1 with no majority · default to Q1 movement read
    var maxCount = Math.max.apply(null, Object.keys(tally).map(function(k){ return tally[k]; }));
    if (maxCount === 1) best = state.q1;
    return best || 'late';
  }

  /* ---------- RENDER RESULTS ---------- */
  function renderResults() {
    var key = resolveStage();
    var s = STAGES[key] || STAGES.late;

    document.getElementById('cds-res-stage-name').textContent = s.name;
    document.getElementById('cds-res-stage-age').textContent = s.stage;
    document.getElementById('cds-res-meaning').textContent = s.meaning;
    document.getElementById('cds-res-focus-intro').textContent = s.focusIntro;
    document.getElementById('cds-res-avoid').textContent = s.avoid;
    document.getElementById('cds-res-note').textContent = s.note;

    var list = document.getElementById('cds-res-focus-list');
    list.innerHTML = '';
    var icons = ['<span class=cds-ei-check></span>', '<span class=cds-ei-target></span>', '<span class=cds-ei-diamond></span>', '<span class=cds-ei-flame></span>'];
    s.focus.forEach(function(item, idx) {
      var div = document.createElement('div');
      div.className = 'cds-focus-item';
      var ic = document.createElement('span');
      ic.className = 'cds-focus-icon';
      ic.textContent = icons[idx % icons.length];
      var tx = document.createElement('span');
      tx.textContent = item;
      div.appendChild(ic);
      div.appendChild(tx);
      list.appendChild(div);
    });
  }

  /* ---------- UNLOCK ENTRY POINT (called by lead gate) ---------- */
  window.runAnalysis = function() {
    var formCard = root.querySelector('.cds-step-screen[data-screen="5"]');
    if (formCard) formCard.style.display = 'none';
    var loading = document.getElementById('cds-loading');
    var results = document.getElementById('cds-results');
    if (loading) loading.classList.add('show');
    try { loading.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}

    var step = 0;
    var msgEl = document.getElementById('cds-loading-msg');
    var interval = setInterval(function() {
      step++;
      if (msgEl && step < LOADING_MSGS.length) {
        msgEl.textContent = LOADING_MSGS[step];
      }
      if (step >= LOADING_MSGS.length) {
        clearInterval(interval);
        renderResults();
        if (loading) loading.classList.remove('show');
        if (results) results.classList.add('show');
        try { results.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
      }
    }, 750);
  };

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

  /* ---------- RESTART ---------- */
  var restartBtn = document.getElementById('cds-restart');
  if (restartBtn) {
    restartBtn.addEventListener('click', function() {
      state = { q1: null, q2: null, q3: null };
      var sel = root.querySelectorAll('.cds-opt.selected');
      for (var i = 0; i < sel.length; i++) sel[i].classList.remove('selected');
      var results = document.getElementById('cds-results');
      if (results) results.classList.remove('show');
      var loading = document.getElementById('cds-loading');
      if (loading) loading.classList.remove('show');
      if (typeof window.resetGhlSubmissionListener === 'function') {
        window.resetGhlSubmissionListener();
      }
      showScreen(1);
    });
  }

  /* ---------- SAVE HTML (CDS Eval Save HTML Standard) ---------- */
  var saveHtmlBtn = document.getElementById('cds-savehtml-btn');
  if (saveHtmlBtn) {
    saveHtmlBtn.addEventListener('click', function() {
      try {
        var clone = root.cloneNode(true);
        // strip interactive-only screens · keep results
        var screensToRemove = clone.querySelectorAll('.cds-hero, .cds-step-screen, .cds-loading, .cds-action-bar, .cds-savehtml-row');
        for (var i = 0; i < screensToRemove.length; i++) {
          screensToRemove[i].parentNode.removeChild(screensToRemove[i]);
        }
        var resultsBlock = clone.querySelector('#cds-results');
        if (resultsBlock) resultsBlock.classList.add('show');

        // pull only this tool's namespaced stylesheet
        var css = '';
        var styleTags = document.querySelectorAll('style');
        for (var j = 0; j < styleTags.length; j++) {
          if (styleTags[j].textContent.indexOf('.cds-dab') !== -1) {
            css += styleTags[j].textContent;
          }
        }

        var doc = '<!doctype html><html><head><meta charset="utf-8">'
          + '<title>CDS Youth Athlete Development Report</title>'
          + '<style>' + css + ' body{margin:0;background:#060d1a;}'
          + '.cds-results{display:block !important;}</style></head><body>'
          + '<div class="cds-dab">' + clone.innerHTML + '</div></body></html>';

        var blob = new Blob([doc], { type: 'text/html' });
        var url = URL.createObjectURL(blob);
        var a = document.createElement('a');
        a.href = url;
        a.download = 'CDS-Athlete-Development-Report.html';
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
        setTimeout(function() { URL.revokeObjectURL(url); }, 1000);
      } catch (err) {
        console.error('[CDS Blueprint] Save HTML failed:', err);
      }
    });
  }

})();
</script>

<script>
/* ============================================================================
   CDS LEAD GATE · Production Detection Module v2
   Form ID: 8zrU29jLl8ZDYLFsA09W
   v2: detects submit via iframesizer postMessage height (the real content
   height GHL broadcasts) plus sticky-contacts capture signal. The old
   offsetHeight watch is unreliable when the iframe wrapper is fixed-height.
============================================================================ */
(function() {
  'use strict';

  var IFRAME_ID = 'inline-8zrU29jLl8ZDYLFsA09W';
  var FORM_ID = '8zrU29jLl8ZDYLFsA09W';
  var POLL_INTERVAL_MS = 400;
  var ARMING_DELAY_MS = 5000;
  var HEIGHT_SHRINK_THRESHOLD_PX = 80;

  var ghlSubmitFired = false;
  var ghlPollInterval = null;
  var ghlArmedAt = 0;
  var ghlMaxHeightSeen = 0;          // max content height from iframesizer msgs
  var ghlStickySeenAt = 0;           // timestamp sticky-contacts capture seen
  var ghlGraceStartHeight = 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;
    ghlStickySeenAt = 0;
    if (ghlPollInterval) clearInterval(ghlPollInterval);

    setTimeout(function() {
      var iframe = document.querySelector('#' + IFRAME_ID);
      if (!iframe) {
        console.warn('[CDS Lead Gate] GHL iframe not found · id:', IFRAME_ID);
        return;
      }
      console.log('[CDS Lead Gate] <span class=cds-ei-target></span> GHL iframe armed · watching postMessage height + sticky-contacts');

      ghlPollInterval = setInterval(function() {
        if (ghlSubmitFired) { clearInterval(ghlPollInterval); return; }

        // SIGNAL A · iframe URL changed to a thank-you/success route
        try {
          var currentSrc = iframe.src || '';
          if (currentSrc.indexOf('thank') !== -1 || currentSrc.indexOf('success') !== -1 ||
              currentSrc.indexOf('complete') !== -1 || currentSrc.indexOf('submitted') !== -1) {
            triggerUnlock('url-change');
            return;
          }
        } catch (e) {}

        // SIGNAL C · iframe body content shows a thank-you (when accessible)
        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) {
              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');
    }
  }

  // Parse height out of an iframesizer message: "[iframesizer]inline-FORMID:HEIGHT:WIDTH:type"
  function parseIframesizerHeight(text) {
    if (text.indexOf('[iframesizer]') === -1) return null;
    if (text.indexOf(FORM_ID.toLowerCase()) === -1) return null;
    var parts = text.split(':');
    if (parts.length < 2) return null;
    var h = parseInt(parts[1], 10);
    return isNaN(h) ? null : h;
  }

  window.addEventListener('message', function(event) {
    if (!event.data) return;
    if (ghlArmedAt === 0 || ghlSubmitFired) 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, 150));

    // SIGNAL D · explicit form_submitted event
    if (signalText.indexOf('"event":"form_submitted"') !== -1 ||
        signalText.indexOf('"type":"form_submitted"') !== -1 ||
        signalText.indexOf('form-submitted') !== -1 ||
        signalText.indexOf('formsubmitted') !== -1) {
      triggerUnlock('postMessage-explicit');
      return;
    }

    // SIGNAL E · sticky-contacts message carrying full contact data = capture happened
    // GHL sends set-sticky-contacts with full_name/customer_id ONLY after the contact
    // is saved to the CRM. This is the most reliable submit signal GHL gives us.
    // A short form may not shrink enough for the height signal, so this drives the unlock.
    if (signalText.indexOf('set-sticky-contacts') !== -1 &&
        (signalText.indexOf('full_name') !== -1 ||
         signalText.indexOf('customer_id') !== -1 ||
         signalText.indexOf('full_address') !== -1)) {
      if (ghlStickySeenAt === 0) {
        ghlStickySeenAt = Date.now();
        console.log('[CDS Lead Gate] sticky-contacts capture seen · contact saved · unlocking shortly');
        // brief safety delay lets GHL paint its own thank-you state first
        setTimeout(function() {
          triggerUnlock('sticky-contacts-capture');
        }, 1400);
      }
      return;
    }

    // SIGNAL B · MAIN · iframesizer broadcasts the real content height
    var h = parseIframesizerHeight(signalText);
    if (h !== null) {
      // a sudden collapse toward zero is GHL tearing down the form on submit
      if (h >= 0 && h < 250 && ghlMaxHeightSeen > 400) {
        console.log('[CDS Lead Gate] <span class=cds-ei-target></span> submit detected · iframe collapsed:',
          ghlMaxHeightSeen, '→', h);
        triggerUnlock('iframesizer-collapse');
        return;
      }
      if (h > 0) {
        if (h > ghlMaxHeightSeen) {
          ghlMaxHeightSeen = h;
          console.log('[CDS Lead Gate] content height grew to:', h);
        }
        // a real shrink from the peak signals the form was replaced by thank-you
        if (ghlMaxHeightSeen > 0 && (ghlMaxHeightSeen - h) > HEIGHT_SHRINK_THRESHOLD_PX) {
          console.log('[CDS Lead Gate] <span class=cds-ei-target></span> submit detected · content height shrank:',
            ghlMaxHeightSeen, '→', h);
          triggerUnlock('iframesizer-height-shrink');
          return;
        }
      }
    }
  });

  window.resetGhlSubmissionListener = function() {
    ghlSubmitFired = false;
    ghlArmedAt = 0;
    ghlMaxHeightSeen = 0;
    ghlStickySeenAt = 0;
    if (ghlPollInterval) clearInterval(ghlPollInterval);
  };

})();
</script>