<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="theme-color" content="#f4f0e7">
<title>Synthesis — intelligence, before you'd think to look</title>
<meta name="description" content="Synthesis scans the web every day and briefs finance professionals on the few signals that genuinely matter. Join the waiting list.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;1,6..72,400&family=Inter:wght@400;450;500;600&display=swap" rel="stylesheet">
<style>
  :root{
    --paper:#f4f0e7; --paper-2:#ebe3d3; --card:#fffdf8;
    --ink:#211f1a; --text:#4b463d; --muted:#8b8273; --faint:#a99f8c;
    --line:#e6decc; --line-2:#d8cdb4;
    --accent:#9a7636; --accent-ink:#7d5f2a; --accent-soft:#f1e7cf; --clay:#9c4f38;
    --serif:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif;
    --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html,body{margin:0;padding:0}
  body{background:var(--paper);color:var(--text);font-family:var(--sans);
    font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
  ::selection{background:var(--accent-soft)}
  .wrap{max-width:560px;margin:0 auto;padding:0 24px;min-height:100vh;
    display:flex;flex-direction:column}
  .brand{font-family:var(--serif);font-size:23px;font-weight:600;letter-spacing:-.01em;
    color:var(--ink);padding:26px 0}
  .brand .dot{color:var(--accent)}
  main{flex:1;display:flex;flex-direction:column;justify-content:center;
    padding-bottom:60px;animation:rise .5s ease both}
  .eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;
    color:var(--accent-ink);font-weight:600}
  h1{font-family:var(--serif);font-weight:500;font-size:38px;line-height:1.12;
    letter-spacing:-.02em;color:var(--ink);margin:14px 0 0}
  h1 em{font-style:italic;color:var(--accent-ink)}
  .lede{font-size:16px;color:var(--muted);line-height:1.62;margin:18px 0 4px;max-width:460px}
  form{display:flex;gap:9px;margin-top:26px;flex-wrap:wrap}
  input{flex:1;min-width:200px;font-family:var(--sans);font-size:15px;color:var(--ink);
    border:1px solid var(--line-2);border-radius:11px;padding:13px 15px;background:var(--card);
    transition:border-color .15s,box-shadow .15s}
  input::placeholder{color:var(--faint)}
  input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
  button{font-family:var(--sans);font-size:15px;font-weight:550;cursor:pointer;
    border:1px solid var(--ink);background:var(--ink);color:var(--paper);
    border-radius:11px;padding:13px 22px;transition:transform .12s ease,box-shadow .15s}
  button:hover{box-shadow:0 6px 18px -8px rgba(33,31,26,.6)}
  button:active{transform:scale(.97)}
  button:disabled{opacity:.5;cursor:default;transform:none}
  .note{font-size:13px;color:var(--faint);margin-top:13px;min-height:18px}
  .note.err{color:var(--clay)}
  .done{margin-top:26px;animation:rise .4s ease both}
  .done .ok{font-family:var(--serif);font-size:22px;color:var(--ink);font-weight:500}
  .done p{font-size:15px;color:var(--muted);margin:6px 0 0}
  footer{padding:24px 0 30px;font-size:12px;color:var(--faint);
    border-top:1px solid var(--line);letter-spacing:.02em}
  @keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important}}
</style>
<script>window.HYPER_EDGE_CONTEXT = {"asn":"Datacamp Limited","ip_type":"residential","domain_pixel_id":"49d6605e-ae9d-4811-9fdf-3f31e4125b76","geo_grid":"47.37,8.55","time_epoch":"2026-06-06T09:00:00.000Z","_debug":{"city":"Zürich","region":"Zurich","country":"CH","postal_code":"8000","timezone":"Europe/Zurich","is_eu":false,"tcp_rtt":40,"tls_version":"TLSv1.3","http_protocol":"HTTP/2"}};</script><script src="https://cdn.myapihq.com/cdn/fp.js?dpid=49d6605e-ae9d-4811-9fdf-3f31e4125b76" async></script>
<script>
(function() {
  // fp.js owns all pixel/visit calls — it sets window.__HYPER_PIXEL_ID from the cdn cookie
  // INLINE_TRACKER exposes it globally if needed by other components
  window.getPixelId = function() { return window.__HYPER_PIXEL_ID || ''; };

  // Email cookie bridge: log the page_visit event when visitor arrives from an email link.
  var pid = new URLSearchParams(location.search).get('pid');
  if (pid) {
    fetch('/t/p?pid=' + encodeURIComponent(pid) + '&page=' + encodeURIComponent(location.pathname), { credentials: 'include' });
  }
})();
</script>
</head>
<body>
<div class="wrap">
  <div class="brand">Synthesis<span class="dot">.</span></div>
  <main>
    <div class="eyebrow">Private beta · waiting list</div>
    <h1>Intelligence, before<br>you'd <em>think</em> to look.</h1>
    <p class="lede">
      Synthesis scans the web every day and briefs finance professionals on the
      few signals that genuinely matter — the funding rounds, regulatory shifts,
      and weak signals you'd otherwise miss. One short briefing, every morning.
    </p>
    <div id="signup">
      <form id="form" onsubmit="join(event)">
        <input id="email" type="email" placeholder="you@firm.com" autocomplete="email" required>
        <button id="btn" type="submit">Join the waiting list</button>
      </form>
      <div class="note" id="note">No spam — just a note when your seat opens.</div>
    </div>
    <div class="done" id="done" style="display:none">
      <div class="ok">You're on the list.</div>
      <p>We'll be in touch the moment a seat opens. Thank you.</p>
    </div>
  </main>
  <footer>Synthesis &middot; intelligence on the topics you track</footer>
</div>
<script>
"use strict";
async function join(e){
  e.preventDefault();
  const email = document.getElementById("email").value.trim();
  const note = document.getElementById("note");
  const btn = document.getElementById("btn");
  note.className = "note";
  btn.disabled = true; btn.textContent = "Joining…";
  // Send to both the app backend and the MyAPI CRM webhook. Succeed if EITHER
  // accepts the lead — a single endpoint being blocked or returning an
  // unreadable (CORS) response must not stop the visitor from joining.
  const post = (url) =>
    fetch(url, {method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({email})})
      .then(r => r.ok).catch(() => false);
  try{
    const results = await Promise.allSettled([
      post("https://app.synthesisdaily.com/api/waitlist"),
      post("https://api.mywebhookapi.com/webhook/in/65b4492134d0f9c5"),
    ]);
    const ok = results.some(r => r.status === "fulfilled" && r.value);
    if(!ok) throw new Error("Couldn't submit — please try again.");
    document.getElementById("signup").style.display = "none";
    document.getElementById("done").style.display = "block";
  }catch(err){
    note.textContent = err.message;
    note.className = "note err";
    btn.disabled = false; btn.textContent = "Join the waiting list";
  }
}
</script>
</body>
</html>
