<svg viewBox="0 0 560 464" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="array-operators-equals-a-or-b-title array-operators-equals-a-or-b-desc">
  <title id="array-operators-equals-a-or-b-title">Equals A or B</title>
  <desc id="array-operators-equals-a-or-b-desc">A Venn diagram of three overlapping sets A, B, and C inside a universe. Sets A and B are shaded in full, showing that catalog_contents equals A, B matches every array that contains either value.</desc>

  <!-- ============ Title ============ -->
  <text x="280" y="52" text-anchor="middle"
        font-family="Inter, system-ui, -apple-system, 'Segoe UI', sans-serif"
        font-size="18" font-weight="600" fill="#f0f0f0">Equals A or B</text>

  <!-- ============ Universe ============
       Logical region: 1px dashed cardBorder over surfaceMuted, x 40..520, y 80..360.
       Interior padding 20 h / 24 v -> usable x 60..500, y 104..336.
       Shaded: the union of A and B, drawn as one outline so the overlap is not painted twice. -->
  <rect x="40" y="80" width="480" height="280" rx="12" ry="12"
        fill="#232323" stroke="none" />
  <rect x="40" y="80" width="480" height="280" rx="12" ry="12"
        fill="none" stroke="#444444" stroke-width="1" stroke-dasharray="4 4" />
  <path d="M280,124.334 A72,72 0 1 0 280,231.666 A72,72 0 1 0 280,124.334 Z" fill="#1c3252" />

  <text x="60" y="104"
        font-family="Inter, system-ui, -apple-system, 'Segoe UI', sans-serif"
        font-size="11" font-weight="500" fill="#f0f0f0">Universe</text>

  <!-- ============ Three-set Venn ============
       r=72, near-equilateral centres 96 apart: A (232,178) B (328,178) C (280,261).
       Sets named in the filter take the accent stroke; the rest stay muted. -->
  <circle cx="232" cy="178" r="72" fill="none"
          stroke="#93c5fd" stroke-width="1.5" />
  <circle cx="328" cy="178" r="72" fill="none"
          stroke="#93c5fd" stroke-width="1.5" />
  <circle cx="280" cy="261" r="72" fill="none"
          stroke="#a8a8a8" stroke-width="1.5" />

  <!-- Set labels sit outside their circles so the shaded region stays clean -->
  <text x="148" y="183" text-anchor="end"
        font-family="Inter, system-ui, -apple-system, 'Segoe UI', sans-serif"
        font-size="13" font-weight="600" fill="#f0f0f0">A</text>
  <text x="412" y="183" text-anchor="start"
        font-family="Inter, system-ui, -apple-system, 'Segoe UI', sans-serif"
        font-size="13" font-weight="600" fill="#f0f0f0">B</text>
  <text x="343" y="326" text-anchor="start"
        font-family="Inter, system-ui, -apple-system, 'Segoe UI', sans-serif"
        font-size="13" font-weight="600" fill="#f0f0f0">C</text>

  <!-- ============ Filter expression ============
       Labels right-aligned, chips sharing a start x; rows pitch 44 from y=392. -->
  <text x="148" y="413" text-anchor="end"
        font-family="Inter, system-ui, -apple-system, 'Segoe UI', sans-serif"
        font-size="13" font-weight="400" fill="#a8a8a8">where</text>

  <rect x="160" y="392" width="180" height="32" rx="6" ry="6" fill="#1f2a3a" />
  <text x="250" y="413" text-anchor="middle"
        font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace"
        font-size="13" fill="#c5d4e8">catalog_contents { }</text>

  <rect x="350" y="392" width="32" height="32" rx="6" ry="6" fill="#1f2a3a" />
  <text x="366" y="413" text-anchor="middle"
        font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace"
        font-size="13" fill="#c5d4e8">=</text>

  <rect x="392" y="392" width="56" height="32" rx="6" ry="6" fill="#1f2a3a" />
  <text x="420" y="413" text-anchor="middle"
        font-family="'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace"
        font-size="13" fill="#c5d4e8">A, B</text>
</svg>
