<svg xmlns="http://www.w3.org/2000/svg" viewBox="-40 -40 700 504" role="img" aria-labelledby="cross-device-join-title cross-device-join-desc" font-family="Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif">
  <title id="cross-device-join-title">One person on web and mobile</title>
  <desc id="cross-device-join-desc">When both platforms send the same user_id, web and mobile activity join into one profile; when they do not, the person splits into separate per-platform profiles.</desc>

  <defs>
    <marker id="cross-device-join-arrow" viewBox="0 0 10 10" refX="9" refY="5"
            markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 Z" fill="#13294b"/>
    </marker>
  </defs>

  <!-- ============ Joined across devices ============ -->

  <!-- Status badge -->
  <rect x="0" y="0" width="190" height="26" rx="13" fill="#ffffff" stroke="#0a7640" stroke-width="1"/>
  <text x="95" y="17" text-anchor="middle" font-size="12" font-weight="600" fill="#0a7640">Joined across devices</text>

  <!-- Source: Web -->
  <g>
    <rect x="0" y="42" width="180" height="104" rx="8" fill="#f8f9fb" stroke="#6f7480" stroke-width="1"/>
    <text x="16" y="68" font-size="14" font-weight="600" fill="#13294b">Web</text>
    <text x="16" y="90" font-size="13" fill="#1e2024">Signed in</text>
    <text x="16" y="110" font-size="13" fill="#1e2024">Purchase</text>
    <text x="16" y="132" font-size="11" fill="#13294b"
          font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace">user_id: usr-7</text>
  </g>

  <!-- Source: Mobile -->
  <g>
    <rect x="0" y="170" width="180" height="104" rx="8" fill="#f8f9fb" stroke="#6f7480" stroke-width="1"/>
    <text x="16" y="196" font-size="14" font-weight="600" fill="#13294b">Mobile</text>
    <text x="16" y="218" font-size="13" fill="#1e2024">Signed in</text>
    <text x="16" y="238" font-size="13" fill="#1e2024">Shared item</text>
    <text x="16" y="260" font-size="11" fill="#13294b"
          font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace">user_id: usr-7</text>
  </g>

  <!-- Fan-in: Web (center y=94) and Mobile (center y=222) converge on the profile -->
  <line x1="188" y1="94" x2="412" y2="142" stroke="#13294b" stroke-width="1.5" marker-end="url(#cross-device-join-arrow)"/>
  <line x1="188" y1="222" x2="412" y2="174" stroke="#13294b" stroke-width="1.5" marker-end="url(#cross-device-join-arrow)"/>

  <!-- Target: one joined profile (focal node) -->
  <g>
    <rect x="420" y="110" width="200" height="96" rx="8" fill="#c1e0fe" stroke="#6f7480" stroke-width="1"/>
    <text x="436" y="140" font-size="14" font-weight="600" fill="#13294b">One user profile</text>
    <text x="436" y="164" font-size="13" fill="#13294b">Web + mobile activity</text>
    <text x="436" y="188" font-size="11" fill="#13294b"
          font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace">user_id: usr-7</text>
  </g>

  <!-- ============ Split by platform ============ -->

  <!-- Status badge -->
  <rect x="0" y="310" width="160" height="26" rx="13" fill="#ffffff" stroke="#b41823" stroke-width="1"/>
  <text x="80" y="327" text-anchor="middle" font-size="12" font-weight="600" fill="#b41823">Split by platform</text>

  <!-- Web-only profile -->
  <g>
    <rect x="0" y="352" width="160" height="72" rx="8" fill="#f8f9fb" stroke="#6f7480" stroke-width="1"/>
    <text x="16" y="382" font-size="14" font-weight="600" fill="#13294b">Web profile</text>
    <text x="16" y="406" font-size="11" fill="#13294b"
          font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace">user_id: usr-7</text>
  </g>

  <!-- Mobile-only profile -->
  <g>
    <rect x="420" y="352" width="200" height="72" rx="8" fill="#f8f9fb" stroke="#6f7480" stroke-width="1"/>
    <text x="436" y="382" font-size="14" font-weight="600" fill="#13294b">Mobile profile</text>
    <text x="436" y="406" font-size="11" fill="#13294b"
          font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace">user_id: usr-99</text>
  </g>

  <!-- No join: dashed danger connector, labelled at the midpoint (x=290, y=388) -->
  <line x1="168" y1="388" x2="412" y2="388" stroke="#b41823" stroke-width="1.5" stroke-dasharray="5 4"/>
  <rect x="199" y="368" width="182" height="40" fill="#ffffff"/>
  <text x="290" y="383" text-anchor="middle" font-size="11" font-weight="500" fill="#b41823">different identity</text>
  <text x="290" y="399" text-anchor="middle" font-size="11" font-weight="500" fill="#b41823">per platform, no join</text>
</svg>
