<svg viewBox="0 0 1540 700" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" font-family="-apple-system, 'Segoe UI', Helvetica, Arial, sans-serif">
  <rect width="1540" height="700" fill="#ffffff"/>
  <defs>
    <g id="i-bubble" fill="none"><path d="M1 2 h16 v10 h-8 l-4 4 v-4 h-4 z"/></g>
    <g id="i-thought" fill="none"><path d="M1 2 h16 v10 h-8 l-4 4 v-4 h-4 z"/><circle cx="6" cy="7" r="1"/><circle cx="9" cy="7" r="1"/><circle cx="12" cy="7" r="1"/></g>
    <g id="i-bolt" fill="none"><path d="M10 1 L3 10.5 h5 L8 17 L15 7.5 h-5 z"/></g>
    <g id="i-image" fill="none"><rect x="1" y="2" width="16" height="13" rx="1.5"/><circle cx="5.5" cy="6.5" r="1.5"/><path d="M3 13 l4.5 -4.5 3 3 2.5 -2.5 3.5 3.5"/></g>
    <g id="i-wave" fill="none"><line x1="2" y1="7" x2="2" y2="11"/><line x1="5.5" y1="4" x2="5.5" y2="14"/><line x1="9" y1="1.5" x2="9" y2="16.5"/><line x1="12.5" y1="5" x2="12.5" y2="13"/><line x1="16" y1="7" x2="16" y2="11"/></g>
    <g id="i-clock" fill="none"><circle cx="9" cy="9" r="7.5"/><path d="M9 4.5 V9 L12.5 11"/></g>
    <g id="i-cube" fill="none"><path d="M9 1 L16.5 5 v8 L9 17 L1.5 13 V5 z"/><path d="M1.5 5 L9 9 L16.5 5 M9 9 V17"/></g>
    <g id="i-search" fill="none"><circle cx="7.5" cy="7.5" r="5.5"/><line x1="11.5" y1="11.5" x2="16.5" y2="16.5"/></g>
    <g id="i-file" fill="none"><path d="M3 1 h8 l4 4 v12 h-12 z"/><path d="M11 1 v4 h4"/></g>
    <g id="i-chip" fill="none"><rect x="4" y="4" width="10" height="10" rx="1.5"/><rect x="7" y="7" width="4" height="4"/><line x1="6.5" y1="4" x2="6.5" y2="1.5"/><line x1="11.5" y1="4" x2="11.5" y2="1.5"/><line x1="6.5" y1="14" x2="6.5" y2="16.5"/><line x1="11.5" y1="14" x2="11.5" y2="16.5"/><line x1="4" y1="6.5" x2="1.5" y2="6.5"/><line x1="4" y1="11.5" x2="1.5" y2="11.5"/><line x1="14" y1="6.5" x2="16.5" y2="6.5"/><line x1="14" y1="11.5" x2="16.5" y2="11.5"/></g>
    <g id="i-terminal" fill="none"><rect x="1" y="2" width="16" height="13" rx="1.5"/><path d="M4 6 l3 2.5 -3 2.5"/><line x1="9" y1="11.5" x2="13" y2="11.5"/></g>
    <g id="i-db" fill="none"><ellipse cx="9" cy="3.5" rx="7" ry="2.5"/><path d="M2 3.5 V14 a7 2.5 0 0 0 14 0 V3.5"/><path d="M2 9 a7 2.5 0 0 0 14 0"/></g>
    <g id="i-hourglass" fill="none"><path d="M4 2 h10 L9 9 z"/><path d="M4 16 h10 L9 9 z"/></g>
    <g id="i-gauge" fill="none"><path d="M2 13 a7.5 7.5 0 0 1 14 0"/><line x1="9" y1="13" x2="12.5" y2="8"/><circle cx="9" cy="13" r="1.2"/></g>
    <g id="i-cap" fill="none"><path d="M9 2 L17 6 9 10 1 6 z"/><path d="M13.5 8 v4.5 c0 1.8 -9 1.8 -9 0 V8"/><line x1="17" y1="6" x2="17" y2="11"/></g>
    <g id="i-coin" fill="none"><circle cx="9" cy="9" r="7.5"/><circle cx="9" cy="9" r="4"/></g>
  </defs>

  <text x="60" y="64" font-size="30" font-weight="700" fill="#0f172a">The AI API billing-units zoo</text>
  <text x="60" y="96" font-size="19" fill="#475569">Seventeen meters in three layers, plus a modifier layer that changes rates, not units.</text>

  <!-- Layer A: consumption -->
  <rect x="60" y="130" width="1080" height="232" rx="16" fill="#eef2ff" stroke="#6366f1" stroke-width="2.5"/>
  <text x="84" y="164" font-size="18" font-weight="700" fill="#0f172a">Consumption units</text>
  <text x="1116" y="164" font-size="14" fill="#64748b" text-anchor="end">1-10</text>

  <!-- A row 1 -->
  <rect x="84" y="178" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="104" cy="198" r="9.5" fill="#6366f1"/><text x="104" y="202" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">1</text>
  <use xlink:href="#i-bubble" href="#i-bubble" transform="translate(246,188) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="96" y="226" font-size="15" font-weight="600" fill="#0f172a">Text tokens</text>
  <text x="96" y="244" font-size="12.5" fill="#64748b">Per tokenizer</text>

  <rect x="292" y="178" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="312" cy="198" r="9.5" fill="#6366f1"/><text x="312" y="202" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">2</text>
  <use xlink:href="#i-thought" href="#i-thought" transform="translate(454,188) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="304" y="226" font-size="15" font-weight="600" fill="#0f172a">Reasoning tokens</text>
  <text x="304" y="244" font-size="12.5" fill="#64748b">Invisible output</text>

  <rect x="500" y="178" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="520" cy="198" r="9.5" fill="#6366f1"/><text x="520" y="202" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">3</text>
  <use xlink:href="#i-bolt" href="#i-bolt" transform="translate(662,188) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="512" y="226" font-size="15" font-weight="600" fill="#0f172a">Cached tokens</text>
  <text x="512" y="244" font-size="12.5" fill="#64748b">1.25x write, 0.1x read</text>

  <rect x="708" y="178" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="728" cy="198" r="9.5" fill="#6366f1"/><text x="728" y="202" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">4</text>
  <use xlink:href="#i-image" href="#i-image" transform="translate(870,188) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="720" y="226" font-size="15" font-weight="600" fill="#0f172a">Media-input tokens</text>
  <text x="720" y="244" font-size="12.5" fill="#64748b">Image, audio, PDF</text>

  <rect x="916" y="178" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="936" cy="198" r="9.5" fill="#6366f1"/><text x="936" y="202" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">5</text>
  <use xlink:href="#i-wave" href="#i-wave" transform="translate(1078,188) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="928" y="226" font-size="15" font-weight="600" fill="#0f172a">Realtime audio tokens</text>
  <text x="928" y="244" font-size="12.5" fill="#64748b">100 ms per token</text>

  <!-- A row 2 -->
  <rect x="84" y="266" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="104" cy="286" r="9.5" fill="#6366f1"/><text x="104" y="290" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">6</text>
  <text x="248" y="292" font-size="15" font-weight="700" fill="#6366f1">Aa</text>
  <text x="96" y="314" font-size="15" font-weight="600" fill="#0f172a">Characters</text>
  <text x="96" y="332" font-size="12.5" fill="#64748b">TTS and guardrails</text>

  <rect x="292" y="266" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="312" cy="286" r="9.5" fill="#6366f1"/><text x="312" y="290" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">7</text>
  <use xlink:href="#i-clock" href="#i-clock" transform="translate(454,276) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="304" y="314" font-size="15" font-weight="600" fill="#0f172a">Minutes / seconds</text>
  <text x="304" y="332" font-size="12.5" fill="#64748b">STT, video, music</text>

  <rect x="500" y="266" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="520" cy="286" r="9.5" fill="#6366f1"/><text x="520" y="290" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">8</text>
  <use xlink:href="#i-cube" href="#i-cube" transform="translate(662,276) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="512" y="314" font-size="15" font-weight="600" fill="#0f172a">Output objects</text>
  <text x="512" y="332" font-size="12.5" fill="#64748b">Images, songs, tasks</text>

  <rect x="708" y="266" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="728" cy="286" r="9.5" fill="#6366f1"/><text x="728" y="290" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">9</text>
  <use xlink:href="#i-search" href="#i-search" transform="translate(870,276) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="720" y="314" font-size="15" font-weight="600" fill="#0f172a">Requests</text>
  <text x="720" y="332" font-size="12.5" fill="#64748b">Search and grounding</text>

  <rect x="916" y="266" width="196" height="76" rx="10" fill="#ffffff" stroke="#c7d2fe" stroke-width="1.5"/>
  <circle cx="936" cy="286" r="9.5" fill="#6366f1"/><text x="936" y="290" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">10</text>
  <use xlink:href="#i-file" href="#i-file" transform="translate(1078,276) scale(1.15)" stroke="#6366f1" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="928" y="314" font-size="15" font-weight="600" fill="#0f172a">Pages</text>
  <text x="928" y="332" font-size="12.5" fill="#64748b">OCR, document AI</text>

  <!-- Layer B: time and capacity -->
  <rect x="60" y="386" width="1080" height="140" rx="16" fill="#ecfdf5" stroke="#10b981" stroke-width="2.5"/>
  <text x="84" y="420" font-size="18" font-weight="700" fill="#0f172a">Time and capacity units</text>
  <text x="1116" y="420" font-size="14" fill="#64748b" text-anchor="end">11-16</text>

  <rect x="84" y="434" width="165" height="76" rx="10" fill="#ffffff" stroke="#a7f3d0" stroke-width="1.5"/>
  <circle cx="102" cy="454" r="9.5" fill="#059669"/><text x="102" y="458" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">11</text>
  <use xlink:href="#i-chip" href="#i-chip" transform="translate(218,444) scale(1.05)" stroke="#059669" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="94" y="482" font-size="15" font-weight="600" fill="#0f172a">GPU-seconds</text>
  <text x="94" y="500" font-size="12.5" fill="#64748b">Priced by card</text>

  <rect x="259" y="434" width="165" height="76" rx="10" fill="#ffffff" stroke="#a7f3d0" stroke-width="1.5"/>
  <circle cx="277" cy="454" r="9.5" fill="#059669"/><text x="277" y="458" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">12</text>
  <use xlink:href="#i-terminal" href="#i-terminal" transform="translate(393,444) scale(1.05)" stroke="#059669" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="269" y="482" font-size="15" font-weight="600" fill="#0f172a">Container-hours</text>
  <text x="269" y="500" font-size="12.5" fill="#64748b">5-min minimum</text>

  <rect x="434" y="434" width="165" height="76" rx="10" fill="#ffffff" stroke="#a7f3d0" stroke-width="1.5"/>
  <circle cx="452" cy="454" r="9.5" fill="#059669"/><text x="452" y="458" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">13</text>
  <use xlink:href="#i-db" href="#i-db" transform="translate(568,444) scale(1.05)" stroke="#059669" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="444" y="482" font-size="15" font-weight="600" fill="#0f172a">GB-days</text>
  <text x="444" y="500" font-size="12.5" fill="#64748b">File storage</text>

  <rect x="609" y="434" width="165" height="76" rx="10" fill="#ffffff" stroke="#a7f3d0" stroke-width="1.5"/>
  <circle cx="627" cy="454" r="9.5" fill="#059669"/><text x="627" y="458" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">14</text>
  <use xlink:href="#i-hourglass" href="#i-hourglass" transform="translate(743,444) scale(1.05)" stroke="#059669" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="619" y="482" font-size="15" font-weight="600" fill="#0f172a">Token-hours</text>
  <text x="619" y="500" font-size="12.5" fill="#64748b">Cache storage</text>

  <rect x="784" y="434" width="165" height="76" rx="10" fill="#ffffff" stroke="#a7f3d0" stroke-width="1.5"/>
  <circle cx="802" cy="454" r="9.5" fill="#059669"/><text x="802" y="458" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">15</text>
  <use xlink:href="#i-gauge" href="#i-gauge" transform="translate(918,444) scale(1.05)" stroke="#059669" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="794" y="482" font-size="15" font-weight="600" fill="#0f172a">PTU-hours</text>
  <text x="794" y="500" font-size="12.5" fill="#64748b">Reserved capacity</text>

  <rect x="959" y="434" width="165" height="76" rx="10" fill="#ffffff" stroke="#a7f3d0" stroke-width="1.5"/>
  <circle cx="977" cy="454" r="9.5" fill="#059669"/><text x="977" y="458" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">16</text>
  <use xlink:href="#i-cap" href="#i-cap" transform="translate(1093,444) scale(1.05)" stroke="#059669" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="969" y="482" font-size="15" font-weight="600" fill="#0f172a">Training tokens</text>
  <text x="969" y="500" font-size="12.5" fill="#64748b">Epochs multiply</text>

  <!-- Layer D: synthetic wrappers -->
  <rect x="60" y="550" width="1080" height="96" rx="16" fill="#fff7ed" stroke="#f59e0b" stroke-width="2.5"/>
  <text x="84" y="584" font-size="18" font-weight="700" fill="#0f172a">Synthetic wrappers</text>
  <text x="1116" y="584" font-size="14" fill="#64748b" text-anchor="end">17</text>
  <circle cx="100" cy="614" r="9.5" fill="#d97706"/><text x="100" y="618" font-size="11" font-weight="700" fill="#ffffff" text-anchor="middle">17</text>
  <use xlink:href="#i-coin" href="#i-coin" transform="translate(120,604) scale(1.1)" stroke="#d97706" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="152" y="612" font-size="15" font-weight="600" fill="#0f172a">Credits / CCUs</text>
  <text x="152" y="632" font-size="13" fill="#64748b">A scalar over the real rate card: 100 CCU = $1.00 on AWS Marketplace, and subscription credits work the same way</text>

  <!-- Modifier panel -->
  <rect x="1170" y="130" width="310" height="516" rx="16" fill="#f8fafc" stroke="#64748b" stroke-width="2.5"/>
  <text x="1194" y="164" font-size="18" font-weight="700" fill="#0f172a">Modifiers</text>
  <text x="1194" y="186" font-size="13" fill="#64748b">Change the rate, not the unit</text>

  <rect x="1194" y="204" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="229" font-size="15" font-weight="700" fill="#dc2626">&#215;0.5</text>
  <text x="1262" y="229" font-size="14" fill="#0f172a">Batch tier</text>

  <rect x="1194" y="258" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="283" font-size="15" font-weight="700" fill="#dc2626">&#215;0.5</text>
  <text x="1262" y="283" font-size="14" fill="#0f172a">Off-peak clock</text>

  <rect x="1194" y="312" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="337" font-size="15" font-weight="700" fill="#dc2626">&#215;1.1</text>
  <text x="1262" y="337" font-size="14" fill="#0f172a">US-pinned inference</text>

  <rect x="1194" y="366" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="391" font-size="15" font-weight="700" fill="#dc2626">&#215;2</text>
  <text x="1262" y="391" font-size="14" fill="#0f172a">Fast service tier</text>

  <rect x="1194" y="420" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="445" font-size="15" font-weight="700" fill="#dc2626">&#215;36</text>
  <text x="1262" y="445" font-size="14" fill="#0f172a">Quality knob</text>

  <rect x="1194" y="474" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="499" font-size="15" font-weight="700" fill="#d97706">Step</text>
  <text x="1262" y="499" font-size="14" fill="#0f172a">Long context &gt;200k</text>

  <rect x="1194" y="528" width="262" height="40" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <text x="1208" y="553" font-size="15" font-weight="700" fill="#d97706">Cliff</text>
  <text x="1262" y="553" font-size="14" fill="#0f172a">After free quota</text>

  <text x="1194" y="600" font-size="13" fill="#475569">Multipliers stack: cached, batch,</text>
  <text x="1194" y="618" font-size="13" fill="#475569">and US-pinned apply at once.</text>
</svg>
