<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8" />

  <meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>Men’s Circulation Check – 60 seconds</title>

  <meta name="description" content="A quick circulation check for men 35+ to understand daily energy, focus and confidence support." />

  <style>

    :root{--bg:#0b1220;--card:#0f1a33;--muted:#9fb0d0;--text:#eaf0ff;--accent:#5eead4;--accent2:#60a5fa;--danger:#fb7185;--ok:#34d399;--warn:#fbbf24;}

    *{box-sizing:border-box} body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial; background: radial-gradient(1200px 600px at 20% 10%, rgba(96,165,250,.18), transparent), radial-gradient(900px 500px at 80% 30%, rgba(94,234,212,.14), transparent), var(--bg); color:var(--text);}

    a{color:inherit}

    .wrap{max-width:980px;margin:0 auto;padding:28px 18px 64px}

    .topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px}

    .brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.3px}

    .dot{width:10px;height:10px;border-radius:999px;background:linear-gradient(135deg,var(--accent),var(--accent2))}

    .pill{font-size:12px;color:var(--muted);border:1px solid rgba(159,176,208,.25);padding:8px 10px;border-radius:999px}

    .hero{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;align-items:stretch}

    @media (max-width:900px){.hero{grid-template-columns:1fr}}

    .card{background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03)); border:1px solid rgba(159,176,208,.18); border-radius:22px; padding:22px; box-shadow: 0 20px 60px rgba(0,0,0,.35)}

    h1{font-size:40px;line-height:1.05;margin:6px 0 10px}

    @media (max-width:520px){h1{font-size:32px}}

    .sub{color:var(--muted);font-size:16px;line-height:1.55;margin:0 0 16px}

    .ctaRow{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:14px}

    .btn{cursor:pointer;border:0;border-radius:14px;padding:12px 16px;font-weight:700}

    .btnPrimary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#061224}

    .btnGhost{background:transparent;color:var(--text);border:1px solid rgba(159,176,208,.25)}

    .note{font-size:12px;color:rgba(234,240,255,.72);line-height:1.45;margin-top:10px}

    .kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}

    @media (max-width:520px){.kpis{grid-template-columns:1fr}}

    .kpi{border:1px solid rgba(159,176,208,.18);border-radius:16px;padding:12px;background:rgba(15,26,51,.35)}

    .kpi b{display:block;font-size:14px}

    .kpi span{color:var(--muted);font-size:12px}


    .quizHeader{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}

    .progress{height:10px;background:rgba(159,176,208,.16);border-radius:999px;overflow:hidden}

    .bar{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--accent2))}


    .q{margin-top:14px}

    .qTitle{font-weight:800;margin:0 0 10px;font-size:16px}

    .options{display:grid;gap:10px}

    .opt{display:flex;align-items:center;gap:10px;border:1px solid rgba(159,176,208,.18);background:rgba(15,26,51,.35);padding:12px;border-radius:16px;cursor:pointer}

    .opt:hover{border-color:rgba(94,234,212,.45)}

    .opt input{accent-color:var(--accent)}


    .row{display:grid;grid-template-columns:1fr 1fr;gap:12px}

    @media (max-width:720px){.row{grid-template-columns:1fr}}

    .field{display:flex;flex-direction:column;gap:6px;margin-top:10px}

    .field label{font-size:12px;color:rgba(234,240,255,.8)}

    .field input{padding:12px 12px;border-radius:14px;border:1px solid rgba(159,176,208,.22);background:rgba(15,26,51,.35);color:var(--text);outline:none}

    .field input:focus{border-color:rgba(96,165,250,.55)}


    .legal{margin-top:12px;display:flex;gap:10px;align-items:flex-start;color:rgba(234,240,255,.78);font-size:12px;line-height:1.4}

    .legal input{margin-top:2px;accent-color:var(--accent)}


    .result{display:none;margin-top:14px}

    .scorePill{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:999px;border:1px solid rgba(159,176,208,.25);background:rgba(15,26,51,.35);font-size:12px}

    .badge{width:10px;height:10px;border-radius:999px;background:var(--warn)}

    .result h2{margin:10px 0 8px;font-size:22px}

    .result p{margin:0 0 12px;color:var(--muted);line-height:1.55}


    .footer{margin-top:18px;color:rgba(234,240,255,.6);font-size:12px;line-height:1.5}

    .small{font-size:11px;color:rgba(234,240,255,.55)}


    .toast{position:fixed;left:18px;right:18px;bottom:18px;max-width:980px;margin:0 auto;display:none}

    .toast .card{padding:14px 16px;border-radius:16px}


    .divider{height:1px;background:rgba(159,176,208,.18);margin:14px 0}


    /* accessibility */

    .sr{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}

  </style>


  <!-- TikTok Pixel (add your Pixel ID) -->

  <!--

  <script>

    !function (w, d, t) {

      w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e};ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{};ttq._i[e]=[];ttq._i[e]._u=i;ttq._t=ttq._t||{};ttq._t[e]=+new Date;ttq._o=ttq._o||{};ttq._o[e]=n||{};var o=d.createElement("script");o.type="text/javascript";o.async=!0;o.src=i+"?sdkid="+e+"&lib="+t;var a=d.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};

      ttq.load('YOUR_PIXEL_ID');

      ttq.page();

    }(window, document, 'ttq');

  </script>

  -->

</head>

<body>

  <div class="wrap">

    <div class="topbar">

      <div class="brand"><span class="dot"></span> VitalFlow Check</div>

      <div class="pill">USA • Men 35+ • 60-second check</div>

    </div>


    <div class="hero">

      <div class="card">

        <div class="pill" style="display:inline-flex;gap:8px;align-items:center">

          <span class="dot" style="width:8px;height:8px"></span>

          Evidence-informed • Non-medical

        </div>

        <h1>Men’s Circulation Check<br/>in 60 seconds</h1>

        <p class="sub">Get a quick, personalized circulation-support score based on daily energy, focus, lifestyle and recovery signals. This is <b>not</b> medical advice—just a practical self-check.</p>


        <div class="ctaRow">

          <button class="btn btnPrimary" id="startBtn">Start the 60-second check</button>

          <button class="btn btnGhost" id="learnBtn">How it works</button>

        </div>

        <div class="note">Privacy-first: your answers are processed on this page. If you choose to enter email, we’ll send your results and a practical plan.</div>


        <div class="kpis">

          <div class="kpi"><b>Fast</b><span>~8 questions</span></div>

          <div class="kpi"><b>Personalized</b><span>score + plan</span></div>

          <div class="kpi"><b>Practical</b><span>actionable next steps</span></div>

        </div>


        <div class="divider"></div>

        <div class="small"><b>Compliance note:</b> Avoids medical claims. Uses “supports / optimizes” language. Do not mention conditions or cures.</div>

      </div>


      <div class="card" id="quizCard" aria-live="polite">

        <div class="quizHeader">

          <div style="font-weight:800">Circulation Check</div>

          <div class="pill" id="stepLabel">Step 1 of 8</div>

        </div>

        <div class="progress" aria-label="progress"><div class="bar" id="bar"></div></div>


        <form id="quizForm">

          <div id="qWrap"></div>


          <div class="ctaRow" style="margin-top:16px">

            <button class="btn btnGhost" type="button" id="backBtn">Back</button>

            <button class="btn btnPrimary" type="button" id="nextBtn">Next</button>

          </div>


          <div class="result" id="result">

            <div class="scorePill"><span class="badge" id="badge"></span><span id="scoreLabel">Score</span></div>

            <h2 id="headline">Your Circulation Support Score</h2>

            <p id="summary">Summary</p>


            <div class="row">

              <div class="field">

                <label for="email">Email (to receive your result & plan)</label>

                <input id="email" name="email" type="email" placeholder="you@email.com" autocomplete="email" />

              </div>

              <div class="field">

                <label for="age">Optional: age</label>

                <input id="age" name="age" type="number" min="18" max="99" placeholder="" />

              </div>

            </div>


            <div class="legal">

              <input id="consent" type="checkbox" />

              <label for="consent">I agree to receive my results and health-related educational content. I understand this is not medical advice.</label>

            </div>


            <div class="ctaRow" style="margin-top:12px">

              <button class="btn btnPrimary" type="button" id="sendBtn">Send my plan</button>

              <a class="btn btnGhost" id="protocolBtn" href="#" rel="nofollow noopener" target="_blank">View the daily support protocol</a>

            </div>


            <div class="small" style="margin-top:10px">If you don’t want email, you can still view the daily support protocol now.</div>

          </div>

        </form>


        <div class="footer">

          <b>Disclaimer:</b> This page is for informational purposes only and does not diagnose, treat, cure or prevent any disease.

        </div>

      </div>

    </div>


    <div class="toast" id="toast"><div class="card" id="toastCard"></div></div>

  </div>


  <script>

    // ====== CONFIG ======

    // Put your Digistore affiliate link here:

    const DIGISTORE_AFFILIATE_LINK = "https://www.digistore24.com/redir/PRODUCT_ID/YOUR_AFFILIATE_ID";


    // Optional: where to send leads (webhook). If empty, it will just download a CSV locally.

    // Examples: Make.com webhook, Zapier webhook, your own endpoint.

    const LEAD_WEBHOOK_URL = ""; // e.g. "https://hook.eu1.make.com/xxxx"


    // ====== QUIZ MODEL ======

    const questions = [

      {

        id: "ageRange",

        title: "1) What’s your age range?",

        options: [

          { label: "35–44", score: 2 },

          { label: "45–54", score: 1 },

          { label: "55–65", score: 0 },

          { label: "65+", score: 0 },

        ]

      },

      {

        id: "energy",

        title: "2) How would you rate your daily energy?",

        options: [

          { label: "Low", score: 0 },

          { label: "Medium", score: 1 },

          { label: "High", score: 2 },

        ]

      },

      {

        id: "sleep",

        title: "3) How is your sleep quality lately?",

        options: [

          { label: "Poor", score: 0 },

          { label: "Okay", score: 1 },

          { label: "Good", score: 2 },

        ]

      },

      {

        id: "activity",

        title: "4) How often do you exercise per week?",

        options: [

          { label: "Rarely", score: 0 },

          { label: "1–2 times", score: 1 },

          { label: "3+ times", score: 2 },

        ]

      },

      {

        id: "stress",

        title: "5) What’s your typical stress level?",

        options: [

          { label: "High", score: 0 },

          { label: "Medium", score: 1 },

          { label: "Low", score: 2 },

        ]

      },

      {

        id: "diet",

        title: "6) How would you rate your nutrition?",

        options: [

          { label: "Needs improvement", score: 0 },

          { label: "Average", score: 1 },

          { label: "Strong", score: 2 },

        ]

      },

      {

        id: "focus",

        title: "7) How is your focus during the day?",

        options: [

          { label: "Low", score: 0 },

          { label: "Medium", score: 1 },

          { label: "Strong", score: 2 },

        ]

      },

      {

        id: "confidence",

        title: "8) How would you rate your day-to-day confidence & drive?",

        options: [

          { label: "Low", score: 0 },

          { label: "Medium", score: 1 },

          { label: "High", score: 2 },

        ]

      },

    ];


    const state = {

      step: 0,

      answers: {},

      totalScore: 0,

      band: "",

    };


    // ====== UI WIRING ======

    const qWrap = document.getElementById('qWrap');

    const bar = document.getElementById('bar');

    const stepLabel = document.getElementById('stepLabel');

    const backBtn = document.getElementById('backBtn');

    const nextBtn = document.getElementById('nextBtn');

    const startBtn = document.getElementById('startBtn');

    const learnBtn = document.getElementById('learnBtn');

    const result = document.getElementById('result');

    const headline = document.getElementById('headline');

    const summary = document.getElementById('summary');

    const scoreLabel = document.getElementById('scoreLabel');

    const badge = document.getElementById('badge');

    const protocolBtn = document.getElementById('protocolBtn');

    const sendBtn = document.getElementById('sendBtn');

    const toast = document.getElementById('toast');

    const toastCard = document.getElementById('toastCard');


    protocolBtn.href = DIGISTORE_AFFILIATE_LINK;


    function toastMsg(html){

      toastCard.innerHTML = html;

      toast.style.display = 'block';

      setTimeout(()=>toast.style.display='none', 3200);

    }


    function renderQuestion(){

      result.style.display = 'none';

      const q = questions[state.step];

      const progress = Math.round(((state.step) / questions.length) * 100);

      bar.style.width = progress + '%';

      stepLabel.textContent = `Step ${state.step + 1} of ${questions.length}`;


      qWrap.innerHTML = `

        <div class="q">

          <p class="qTitle">${q.title}</p>

          <div class="options" role="radiogroup" aria-label="${q.title}">

            ${q.options.map((o, idx)=>{

              const checked = state.answers[q.id] === idx ? 'checked' : '';

              return `

                <label class="opt">

                  <input type="radio" name="${q.id}" value="${idx}" ${checked} />

                  <span>${o.label}</span>

                </label>`;

            }).join('')}

          </div>

        </div>

      `;


      backBtn.style.visibility = state.step === 0 ? 'hidden' : 'visible';

      nextBtn.textContent = state.step === questions.length - 1 ? 'Finish' : 'Next';

    }


    function readSelected(){

      const q = questions[state.step];

      const sel = qWrap.querySelector(`input[name="${q.id}"]:checked`);

      if(!sel) return null;

      return parseInt(sel.value, 10);

    }


    function calcResult(){

      let total = 0;

      questions.forEach(q=>{

        const idx = state.answers[q.id];

        if(idx == null) return;

        total += q.options[idx].score;

      });

      state.totalScore = total;


      // Max score = 16

      if(total <= 6){

        state.band = 'Low';

      } else if(total <= 11){

        state.band = 'Medium';

      } else {

        state.band = 'Strong';

      }


      let color = getComputedStyle(document.documentElement).getPropertyValue('--warn');

      if(state.band === 'Low') color = getComputedStyle(document.documentElement).getPropertyValue('--danger');

      if(state.band === 'Strong') color = getComputedStyle(document.documentElement).getPropertyValue('--ok');

      badge.style.background = color;


      scoreLabel.textContent = `Circulation Support Score: ${state.band}`;


      if(state.band === 'Low'){

        headline.textContent = 'Your circulation support signals look underpowered';

        summary.textContent = 'Based on your inputs, your daily energy, recovery and lifestyle signals suggest your circulation support stack may need attention. Next: a simple, non-medical daily protocol that supports healthy blood flow and performance.';

      } else if(state.band === 'Medium'){

        headline.textContent = 'Your circulation support signals look average';

        summary.textContent = 'Your inputs suggest you’re doing some things right, but there’s room to optimize circulation support for stronger daily energy, focus and confidence. Next: a simple daily support protocol.';

      } else {

        headline.textContent = 'Your circulation support signals look strong';

        summary.textContent = 'Your inputs suggest a good baseline for daily energy and recovery. If you want to maintain momentum, a simple daily protocol can help support consistency over time.';

      }


      bar.style.width = '100%';

      stepLabel.textContent = `Completed`;

      result.style.display = 'block';

      qWrap.innerHTML = '';

    }


    function downloadCSVRow(row){

      const headers = Object.keys(row);

      const values = headers.map(h => (''+row[h]).replaceAll('"','""'));

      const csv = headers.join(',') + "\n" + values.map(v=>`"${v}"`).join(',') + "\n";

      const blob = new Blob([csv], {type:'text/csv'});

      const url = URL.createObjectURL(blob);

      const a = document.createElement('a');

      a.href = url;

      a.download = 'lead.csv';

      a.click();

      URL.revokeObjectURL(url);

    }


    async function submitLead(){

      const email = document.getElementById('email').value.trim();

      const age = document.getElementById('age').value.trim();

      const consent = document.getElementById('consent').checked;


      if(!email){

        toastMsg('<b>Missing email.</b> Enter an email to receive your plan (or click “View the daily support protocol”).');

        return;

      }

      if(!consent){

        toastMsg('<b>Consent required.</b> Please check the consent box to receive emails.');

        return;

      }


      const payload = {

        ts: new Date().toISOString(),

        email,

        age: age || null,

        score_band: state.band,

        score_total: state.totalScore,

        answers: state.answers,

        source: 'tiktok',

        page: location.href,

      };


      // TikTok event (uncomment if pixel is installed)

      // if(window.ttq){ ttq.track('SubmitForm'); }


      try{

        if(LEAD_WEBHOOK_URL){

          const res = await fetch(LEAD_WEBHOOK_URL, {

            method:'POST',

            headers:{'Content-Type':'application/json'},

            body: JSON.stringify(payload)

          });

          if(!res.ok) throw new Error('Webhook failed');

          toastMsg('<b>Sent.</b> Check your inbox for your plan.');

        } else {

          downloadCSVRow({

            ts: payload.ts,

            email: payload.email,

            age: payload.age ?? '',

            score_band: payload.score_band,

            score_total: payload.score_total,

          });

          toastMsg('<b>Saved.</b> (No webhook configured.) Add your webhook URL to store leads automatically.');

        }

      } catch(e){

        toastMsg('<b>Error.</b> Could not send. Configure a webhook URL or try again.');

      }

    }


    backBtn.addEventListener('click', ()=>{

      if(state.step === 0) return;

      state.step -= 1;

      renderQuestion();

    });


    nextBtn.addEventListener('click', ()=>{

      const selected = readSelected();

      if(selected == null){

        toastMsg('<b>Select one option</b> to continue.');

        return;

      }

      const q = questions[state.step];

      state.answers[q.id] = selected;


      if(state.step === questions.length - 1){

        calcResult();

      } else {

        state.step += 1;

        renderQuestion();

      }

    });


    startBtn.addEventListener('click', ()=>{

      document.getElementById('quizCard').scrollIntoView({behavior:'smooth', block:'start'});

    });


    learnBtn.addEventListener('click', ()=>{

      toastMsg('<b>How it works:</b> Answer 8 quick questions → get a score → optionally receive a plan by email → view a daily support protocol.');

    });


    sendBtn.addEventListener('click', submitLead);


    // Init

    renderQuestion();

  </script>

</body>

</html>