<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 640" font-size="13" role="img" aria-label="RCI-HSD field-to-cloud data path for wireline CCL acquisition">
  <style>
    @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500&amp;family=IBM+Plex+Mono:wght@400;500&amp;display=swap');
    .t  { font-family:'Space Grotesk',ui-sans-serif,system-ui,sans-serif; }
    .m  { font-family:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace; }
    text { fill:#FCF9F2; }
    .mu { fill:#C7BFAE; }
    .tl { fill:#C1A06B; }
    .node { fill:#201D19; stroke:rgba(252,249,242,0.14); stroke-width:1; }
    .hero { fill:#0C1E30; stroke:#C1A06B; stroke-width:1.4; }
    .chip { fill:#0C1E30; stroke:rgba(252,249,242,0.12); stroke-width:1; }
    .conn { fill:none; stroke:#C1A06B; stroke-width:1.6; }
  </style>
  <defs>
    <marker id="ar" markerWidth="9" markerHeight="9" refX="6.5" refY="3" orient="auto">
      <path d="M0,0 L6.5,3 L0,6 Z" fill="#C1A06B"/>
    </marker>
  </defs>

  <!-- canvas -->
  <rect x="0" y="0" width="1280" height="640" fill="#131211"/>

  <!-- header -->
  <text class="m tl" x="48" y="44" font-size="12" letter-spacing="3">RCI-HSD // WIRELINE CCL ACQUISITION</text>
  <text class="t" x="48" y="74" font-size="24" font-weight="300">Data path from field to cloud</text>

  <!-- zone divider + labels -->
  <line x1="612" y1="104" x2="612" y2="536" stroke="rgba(252,249,242,0.12)" stroke-width="1" stroke-dasharray="3 5"/>
  <text class="m mu" x="300" y="118" font-size="11" letter-spacing="4" text-anchor="middle">FIELD</text>
  <text class="m mu" x="952" y="118" font-size="11" letter-spacing="4" text-anchor="middle">CLOUD / OFFICE</text>

  <!-- ============ connectors (drawn first, behind nodes) ============ -->
  <!-- A -> B -->
  <path class="conn" d="M168,332 L190,332" marker-end="url(#ar)"/>
  <!-- B -> C -->
  <path class="conn" d="M346,332 L380,332" marker-end="url(#ar)"/>
  <!-- surface channels -> C (down into RCI-HSD) -->
  <path class="conn" d="M452,224 L468,286" marker-end="url(#ar)"/>
  <!-- C -> Hub : a high-frequency CCL waveform crossing the divider -->
  <path class="conn" d="M558,332 l8,-13 l8,13 l8,-13 l8,13 l8,-13 l8,13 l8,-13 l8,13 l8,-13 l8,13 l8,-13 l8,13 l10,0" marker-end="url(#ar)"/>
  <!-- Hub -> API -->
  <path class="conn" d="M790,332 L814,332" marker-end="url(#ar)"/>
  <!-- Storage <-> API -->
  <path class="conn" d="M912,228 L912,298" marker-end="url(#ar)"/>
  <!-- API -> Analytics -->
  <path class="conn" d="M1004,332 L1046,332" marker-end="url(#ar)"/>

  <!-- crossing annotation, placed in the open band below the spine to avoid crowding the divider -->
  <line x1="612" y1="346" x2="612" y2="430" stroke="rgba(193,160,107,0.45)" stroke-width="1" stroke-dasharray="2 4"/>
  <text class="m tl" x="612" y="450" font-size="11" text-anchor="middle">750 Hz CCL  +  9 to 10 Hz surface</text>
  <text class="m mu" x="612" y="468" font-size="10" text-anchor="middle">uplinked via Starlink · 0.7 Kbit/s</text>
  <text class="m mu" x="1025" y="322" font-size="9" text-anchor="middle">REST</text>

  <!-- ============ nodes ============ -->
  <!-- CCL Sensor -->
  <rect class="node" x="48" y="302" width="120" height="60" rx="6"/>
  <text class="t" x="108" y="330" font-size="14" text-anchor="middle">CCL Sensor</text>
  <text class="m mu" x="108" y="348" font-size="9" text-anchor="middle">slim, downhole</text>

  <!-- Signal Conditioning -->
  <rect class="node" x="196" y="302" width="150" height="60" rx="6"/>
  <text class="t" x="271" y="328" font-size="14" text-anchor="middle">Signal</text>
  <text class="t" x="271" y="345" font-size="14" text-anchor="middle">Conditioning</text>

  <!-- RCI-HSD (hero) -->
  <rect class="hero" x="380" y="288" width="178" height="92" rx="7"/>
  <circle cx="398" cy="306" r="4" fill="#E0C691"/>
  <text class="t" x="478" y="322" font-size="20" font-weight="300" text-anchor="middle">RCI-HSD</text>
  <text class="m mu" x="478" y="344" font-size="9.5" text-anchor="middle">DAQ · CPU · A/D</text>
  <text class="m tl" x="478" y="360" font-size="9.5" text-anchor="middle">25 kHz / 16 bit · 30 day buffer</text>

  <!-- Surface channels (feeds RCI-HSD) -->
  <rect class="node" x="336" y="150" width="232" height="74" rx="6"/>
  <text class="t" x="452" y="176" font-size="13" text-anchor="middle">Surface channels</text>
  <text class="m mu" x="452" y="195" font-size="9.5" text-anchor="middle">depth · line tension · shooting V/I</text>
  <text class="m mu" x="452" y="210" font-size="9.5" text-anchor="middle">via Warrior · NOV · Benchmark</text>

  <!-- RCI IoT Hub -->
  <rect class="node" x="660" y="302" width="130" height="60" rx="6"/>
  <text class="t" x="725" y="328" font-size="14" text-anchor="middle">RCI IoT Hub</text>
  <text class="m mu" x="725" y="348" font-size="9" text-anchor="middle">ingest · dedup</text>

  <!-- Storage (above API) -->
  <rect class="node" x="820" y="172" width="184" height="56" rx="6"/>
  <text class="t" x="912" y="196" font-size="13" text-anchor="middle">Storage</text>
  <text class="m mu" x="912" y="214" font-size="9.5" text-anchor="middle">180+ days → indefinite</text>

  <!-- RCI IoT API -->
  <rect class="node" x="820" y="302" width="184" height="60" rx="6"/>
  <text class="t" x="912" y="326" font-size="14" text-anchor="middle">RCI IoT API</text>
  <text class="m tl" x="912" y="346" font-size="9.5" text-anchor="middle">iot.roderickc.com/api</text>

  <!-- Analytics -->
  <rect class="node" x="1046" y="302" width="186" height="60" rx="6"/>
  <text class="t" x="1139" y="326" font-size="14" text-anchor="middle">Analytics</text>
  <text class="m mu" x="1139" y="346" font-size="9.5" text-anchor="middle">customer · 3rd party</text>

  <!-- footer spec line -->
  <line x1="48" y1="566" x2="1232" y2="566" stroke="rgba(252,249,242,0.10)" stroke-width="1"/>
  <text class="m mu" x="48" y="592" font-size="10" letter-spacing="1.5">PERMANENTLY TRUCK MOUNTED · REDUNDANT FOR 100% UPTIME · NO LOGGING INTERFERENCE · REAL TIME EMAIL / WHATSAPP ALARMS</text>
</svg>
