ontoref/assets/presentation/images/arch-diag-v2.svg
Jesús Pérez d59644b96f
feat: unified auth model, project onboarding, install pipeline, config management
The full scope across this batch: POST /sessions key→token exchange, SessionStore dual-index with revoke_by_id, CLI Bearer injection (ONTOREF_TOKEN), ontoref setup
  --gen-keys, install scripts, daemon config form roundtrip, ADR-004/005, on+re self-description update (fully-self-described), and landing page refresh.
2026-03-13 20:56:31 +00:00

701 lines
70 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 900">
<style>
.orbit-flow { animation: orbit-dash 4s linear infinite; }
@keyframes orbit-dash { from { stroke-dashoffset: 40; } to { stroke-dashoffset: 0; } }
.ring-glow { animation: ring-breathe 3s ease-in-out infinite; }
@keyframes ring-breathe { 0%,100% { opacity: 0.06; } 50% { opacity: 0.18; } }
.spoke { animation: spoke-dash 2s linear infinite; }
@keyframes spoke-dash { from { stroke-dashoffset: 16; } to { stroke-dashoffset: 0; } }
.health { animation: pulse 2.2s ease-in-out infinite; }
.health-d1 { animation-delay: 0.4s; }
.health-d2 { animation-delay: 0.8s; }
.health-d3 { animation-delay: 1.2s; }
.health-d4 { animation-delay: 1.6s; }
@keyframes pulse { 0%,100% { opacity: 0.35; } 50% { opacity: 1; } }
.https-beam { animation: https-p 4s ease-in-out infinite; }
@keyframes https-p { 0%,100% { opacity: 0.15; stroke-width: 1.5; } 50% { opacity: 0.7; stroke-width: 2.5; } }
.https-label { animation: https-lbl 4s ease-in-out infinite; }
@keyframes https-lbl { 0%,100% { opacity: 0.3; } 50% { opacity: 1; } }
.solid-border { animation: solid-glow 3.5s ease-in-out infinite; }
@keyframes solid-glow { 0%,100% { stroke-opacity: 0.3; } 50% { stroke-opacity: 0.7; } }
.hub-pulse { animation: hub-beat 3s ease-in-out infinite; }
@keyframes hub-beat { 0%,100% { opacity: 0.3; } 50% { opacity: 0.6; } }
.cred-dot { opacity: 0; }
.db-flow { animation: db-dash 2.5s linear infinite; }
@keyframes db-dash { from { stroke-dashoffset: 12; } to { stroke-dashoffset: 0; } }
</style>
<defs>
<filter id="glow-blue" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceGraphic" stdDeviation="6" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-orange" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-pink" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-purple" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-cyan" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-gold" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur in="SourceGraphic" stdDeviation="6" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-flash" x="-100%" y="-100%" width="300%" height="300%">
<feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="soft-shadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="2" stdDeviation="8" flood-color="#000" flood-opacity="0.5"/>
</filter>
<filter id="ring-glow-f" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur in="SourceGraphic" stdDeviation="8" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<radialGradient id="bg-radial" cx="50%" cy="42%" r="55%">
<stop offset="0%" stop-color="#111520"/>
<stop offset="100%" stop-color="#0a0c10"/>
</radialGradient>
<radialGradient id="hub-glow" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#94a3b8" stop-opacity="0.15"/>
<stop offset="100%" stop-color="#94a3b8" stop-opacity="0"/>
</radialGradient>
<linearGradient id="orch-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2a2016"/><stop offset="100%" stop-color="#1a150f"/>
</linearGradient>
<linearGradient id="ctrl-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#1a1630"/><stop offset="100%" stop-color="#110f1e"/>
</linearGradient>
<linearGradient id="vault-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2a1630"/><stop offset="100%" stop-color="#1a0f1e"/>
</linearGradient>
<linearGradient id="ext-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2a1620"/><stop offset="100%" stop-color="#1a0f14"/>
</linearGradient>
<linearGradient id="mcp-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0f2a2e"/><stop offset="100%" stop-color="#0a1c1e"/>
</linearGradient>
<linearGradient id="surreal-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#3a3050"/><stop offset="100%" stop-color="#2e2640"/>
</linearGradient>
<linearGradient id="cli-grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#1a2a42"/><stop offset="100%" stop-color="#0f1a2e"/>
</linearGradient>
<!-- Animated gradient for infinity engine color cycling -->
<linearGradient id="infinityGradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#00D4FF;stop-opacity:1">
<animate attributeName="stop-color" values="#00D4FF;#7B2BFF;#00FFB3;#00D4FF" dur="3s" repeatCount="indefinite"/>
</stop>
<stop offset="50%" style="stop-color:#7B2BFF;stop-opacity:1">
<animate attributeName="stop-color" values="#7B2BFF;#00FFB3;#00D4FF;#7B2BFF" dur="3s" repeatCount="indefinite"/>
</stop>
<stop offset="100%" style="stop-color:#00FFB3;stop-opacity:1">
<animate attributeName="stop-color" values="#00FFB3;#00D4FF;#7B2BFF;#00FFB3" dur="3s" repeatCount="indefinite"/>
</stop>
</linearGradient>
<marker id="arr-blue" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
<polygon points="0 0, 8 3, 0 6" fill="#4a9eff"/>
</marker>
<marker id="arr-silver" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
<polygon points="0 0, 8 3, 0 6" fill="#94a3b8"/>
</marker>
<marker id="arr-gold" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
<polygon points="0 0, 8 3, 0 6" fill="#fbbf24"/>
</marker>
<marker id="arr-green" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
<polygon points="0 0, 8 3, 0 6" fill="#10b981"/>
</marker>
<marker id="arr-green-sm" markerWidth="5" markerHeight="4" refX="5" refY="2" orient="auto">
<polygon points="0 0, 5 2, 0 4" fill="#10b981"/>
</marker>
<path id="orbit-cw" d="M 640,185 A 135,135 0 1,1 640,455 A 135,135 0 1,1 640,185 Z" fill="none"/>
<path id="orbit-ccw" d="M 640,185 A 135,135 0 1,0 640,455 A 135,135 0 1,0 640,185 Z" fill="none"/>
<path id="path-orch-vault" d="M 640,185 A 135,135 0 0,0 508,276" fill="none"/>
<path id="path-vault-orch" d="M 508,276 A 135,135 0 0,1 640,185" fill="none"/>
<path id="path-cli-orch" d="M 660,98 L 660,115" fill="none"/>
</defs>
<!-- ═══ BACKGROUND ═══ -->
<rect width="1280" height="900" fill="url(#bg-radial)"/>
<g opacity="0.03">
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#fff" stroke-width="0.5"/>
</pattern>
<rect width="1280" height="900" fill="url(#grid)"/>
</g>
<!-- Star field -->
<g opacity="0.35">
<circle cx="95" cy="145" r="0.8" fill="#fff"/><circle cx="340" cy="78" r="0.6" fill="#fff"/>
<circle cx="890" cy="115" r="1" fill="#fff"/><circle cx="1120" cy="210" r="0.7" fill="#fff"/>
<circle cx="180" cy="460" r="0.5" fill="#fff"/><circle cx="1160" cy="510" r="0.8" fill="#fff"/>
<circle cx="72" cy="660" r="0.6" fill="#fff"/><circle cx="960" cy="710" r="0.9" fill="#fff"/>
</g>
<!-- ═══ TITLE ═══ -->
<g transform="translate(206, 20) scale(0.35)">
<g id="logo-content"><g><g><path d="M601.85,109.76c.89,.04,.57-.38,.7-.46-1.49,.09-.67,.57-.7,.46Z" style="fill:#b0dff6;"/><polygon points="587.17 110.72 587.43 110.55 585.26 110.96 587.17 110.72" style="fill:#b0dff6;"/><path d="M573.43,110.71c1.3,.71,4.98-.12,7.42,.14l.4,.16,1.1-.57c-2.97,.09-6.84,.47-8.93,.27Z" style="fill:#b0dff6;"/><path d="M566.11,109.16c.45,.28-1.58,.24,1.71,.09-.17-.03-.21-.05-.31-.07-.3,0-.7,0-1.4-.02Z" style="fill:#b0dff6;"/><path d="M567.51,109.18c1.45-.02-.95-.23,0,0h0Z" style="fill:#b0dff6;"/><path d="M560.83,109.34l1.9-.25c-.4-.16-2.09-.2-1.46-.32-1.95,.14-1.55,.3-.44,.57Z" style="fill:#b0dff6;"/><path d="M559.02,109.86l.99-.1c-.17-.07-.43-.09-.99,.1Z" style="fill:#b0dff6;"/><path d="M562.11,109.53l-2.09,.22c.28,.12,.3,.35,.96-.08-.17,.21,.24,0,1.13-.14Z" style="fill:#b0dff6;"/><path d="M563.29,109.64c1.07,.16,2.45,.25,.54,.5,3.64-.1,3.11-.6-.54-.5Z" style="fill:#b0dff6;"/><path d="M572.73,111.45l1.43,.21,1.24-.24c-.62,.12-2.75-.19-2.66,.03Z" style="fill:#b0dff6;"/><path d="M548.96,108.97c-.12,.15,.64,.4,.78,.6l1.41-.17c-.72-.1-2.09-.2-2.19-.42Z" style="fill:#b0dff6;"/><path d="M549.75,109.57l-2.11,.26c1.88,.03,2.22-.09,2.11-.26Z" style="fill:#b0dff6;"/><polygon points="558.69 110.65 562.14 110.11 558.02 110.66 558.69 110.65" style="fill:#b0dff6;"/><polygon points="540.92 108.95 542.12 108.6 539.99 109.13 540.92 108.95" style="fill:#b0dff6;"/><path d="M535.59,109.01c.88-.29-1.21-.49-.28-.67-1.45,.05-2.69,.3-3.8,.53,1.18-.13,2.44-.09,4.08,.14Z" style="fill:#b0dff6;"/><path d="M529.64,109.2c.59-.07,1.2-.19,1.87-.33-.63,.07-1.25,.16-1.87,.33Z" style="fill:#b0dff6;"/><path d="M544.06,109.76c-.16-.09-.48-.33-1.66-.43l.83,.43c.25,0,.54,0,.83,0Z" style="fill:#b0dff6;"/><path d="M543.26,109.76h-.03c-.9-.02-1.52-.03-1.79-.04,.23,0,.78,.01,1.82,.04Z" style="fill:#b0dff6;"/><path d="M544.26,109.76c-.08,0-.13,0-.21,0,.08,.04,.13,.06,.21,0Z" style="fill:#b0dff6;"/><path d="M553.17,110.27c-1.24,.24-3.82,.5-1.32,.86,.89-.29-.54-.5,1.32-.86Z" style="fill:#b0dff6;"/><path d="M545.29,110.29l2.24,.1c-.04-.11-.45-.28,.17-.4l-2.4,.3Z" style="fill:#b0dff6;"/><polygon points="544.2 110.43 545.29 110.29 544.46 110.26 544.2 110.43" style="fill:#b0dff6;"/><path d="M533.47,109.6c-.97,.19-2.02,.2-3.22,.23,1.28,.08,2.6,.13,3.86,.13,.18-.13,.73-.38-.64-.36Z" style="fill:#b0dff6;"/><path d="M538.23,109.71c-.07,0-.15,.01-.21,.02,.13,.04,.24,.05,.21-.02Z" style="fill:#b0dff6;"/><path d="M518.51,109.82c.07,.02,.12,.05,.19,.08,.01-.02,.02-.05,.04-.07h-.23Z" style="fill:#b0dff6;"/><path d="M534.33,110.04c.96,.08,1.54-.02,2.08-.15-.72,.04-1.48,.07-2.3,.07-.08,.06-.09,.1,.21,.08Z" style="fill:#b0dff6;"/><path d="M526.36,109.4c.5,.09,1.07,.17,1.67,.23-.49-.14-1.49-.35-1.67-.23Z" style="fill:#b0dff6;"/><path d="M537.69,109.62s.09-.01,.14-.02c-.32-.09-.28-.05-.14,.02Z" style="fill:#b0dff6;"/><path d="M537.69,109.62c-.49,.06-.88,.17-1.27,.26,.59-.03,1.13-.08,1.6-.14-.12-.03-.24-.08-.32-.12Z" style="fill:#b0dff6;"/><path d="M514.95,112.57c.17-.4,2.7-.76,4.88-.34,2.15-.3,.74-1.6-1.13-2.33-.07,.17-.07,.33-2.28,.57,.77,.22,4.9,.51,3.04,.86-2.93,.2-2.4-.14-3.82-.35,1.21,.49-3.72,.72-3.09,1.44l2.57-.26c.05,.11-.88,.29-.17,.4Z" style="fill:#b0dff6;"/><path d="M522.91,109.94l.91-.05c-1.04-.07-1.78-.23-3.15-.54-1.51,.19-1.83,.34-1.93,.47l4.48,.06-.31,.06Z" style="fill:#b0dff6;"/><path d="M527.9,109.89c-.71,.43-2.89,.61-1.56,1.08,2.67-.03,1.87-.36,3.46-.55-4.31,.11,1.24-.24-1.87-.48,.85-.07,1.61-.1,2.33-.11-.78-.05-1.52-.12-2.23-.2,.04,0,.07,.02,.1,.03h.02s0,0,0,0c.19,.05,.25,.09,.04,.06-.01,0-.07,0-.09,0-.03,.06-.11,.11-.19,.16-1.25-.09-.2-.11,.19-.16,.01-.02,.05-.04,.05-.06,0,0-.01,0-.02,0l-4.31,.24c.91,.06,2.06,.05,4.08,0Z" style="fill:#b0dff6;"/><path d="M549.54,112.05c-.13-.04-.13-.07-.14-.1-.28,.05-.38,.09,.14,.1Z" style="fill:#b0dff6;"/><path d="M547.77,111.79c.31-.06,.57-.23,1.59-.19,.88,.13,0,.21,.04,.35,.61-.11,2.15-.31,.22-.52l-.31,.06c-1.74-.15-3.97-.69-3.66-.74,.51,.39,.95,.66,2.11,1.04Z" style="fill:#b0dff6;"/><path d="M537.71,110.95l-3.59,.21,1.83,.37-.09-.22c2.04,.09,1.6-.19,1.86-.36Z" style="fill:#b0dff6;"/><polygon points="518.1 109.61 518.57 109.15 516.5 109.8 518.1 109.61" style="fill:#b0dff6;"/><polygon points="513.43 109.66 513.6 109.27 512.37 109.51 513.43 109.66" style="fill:#b0dff6;"/><path d="M250.01,114.57l-1.06,.11c.5-.03,.82-.07,1.06-.11Z" style="fill:#b0dff6;"/><path d="M257.65,114.6l.19-.19c-.35,.11-.5,.19-.19,.19Z" style="fill:#b0dff6;"/><path d="M398.78,109.71c-1.54-.37-3.25-.94-3.07-.5l.47,.43c1.07-.08,1.9-.03,2.6,.06Z" style="fill:#b0dff6;"/><path d="M320.27,112.3c.15,.04,.3,.09,.45,.13,.37-.15,.73-.29,1.04-.42-.45,.09-.96,.18-1.49,.28Z" style="fill:#b0dff6;"/><path d="M319.18,114.09l-2.03-.28c.46,.1,1.11,.19,2.03,.28Z" style="fill:#b0dff6;"/><path d="M208.27,115.03l-1.23,.44c1.93,0,1.08-.23,1.23-.44Z" style="fill:#b0dff6;"/><path d="M465.62,109.82c-1.33-.17-2.38-.24-3.31-.26,1.6,.25,2.89,.62,3.31,.26Z" style="fill:#b0dff6;"/><path d="M253.01,109.97c-.65,.08-.92,.17-.9,.26,.66-.07,1.04-.16,.9-.26Z" style="fill:#b0dff6;"/><path d="M458.48,109.56c.23,.04,.46,.07,.7,.1,.97-.07,1.95-.13,3.13-.1-1.18-.19-2.53-.3-3.83,0Z" style="fill:#b0dff6;"/><path d="M56.92,114.68c-.11-.02-.24-.03-.34-.05-.03,.06,.12,.06,.34,.05Z" style="fill:#b0dff6;"/><path d="M12.82,110.3c.43-.03,1.14-.03,1.81-.03-.33-.03-.87-.03-1.81,.03Z" style="fill:#b0dff6;"/><path d="M494.65,109.47c.99-.03,.16-.05,0,0h0Z" style="fill:#b0dff6;"/><path d="M499.46,111.19c-.21,.05-.37,.11-.4,.21,.08-.1,.22-.17,.4-.21Z" style="fill:#b0dff6;"/><path d="M448.61,112.26s-.05,0-.09,0c.29,.08,.24,.07,.09,0Z" style="fill:#b0dff6;"/><path d="M496.14,109.67c-.37-.05-.8-.1-1.27-.13,.2,.03,.59,.08,1.27,.13Z" style="fill:#b0dff6;"/><path d="M495.93,109.47c.34,.02,.61,.03,.87,.04,.12-.07,.01-.12-.87-.04Z" style="fill:#b0dff6;"/><path d="M493.27,109.5c.57,0,1.09,.01,1.6,.05-.19-.03-.28-.05-.22-.07-.29,0-.7,.02-1.38,.02Z" style="fill:#b0dff6;"/><path d="M138.01,113.51c-.07-.01-.14-.02-.21-.04-1,.18-.56,.15,.21,.04Z" style="fill:#b0dff6;"/><path d="M373.02,114.21s.07-.02,.11-.02c-.05,0-.1-.01-.15-.02l.03,.04Z" style="fill:#b0dff6;"/><path d="M369.46,114.54c1.51-.54,2.38-.47,3.52-.36l-1.18-1.25-2.35,1.61Z" style="fill:#b0dff6;"/><path d="M231.71,114.7l2.5,.39c-3.01,.64-5.19,.42-2.85,.97,.35-1.36,9.71-.14,10.05-1.5l1.65,.29c-.47-.01-.55,.07-1.01,.05,3.2,.65,2.38-.98,6.5-.79,1.44,.1,2.44,.3,1.46,.46l3.2-.34c.93,.03,.7,.26-.22,.24l4.89-.11-.04,.04c.7-.21,2.28-.54,3.05-.68,1.24,.19-.62,.14-.3,.31l2.71-.33c1.1,.35-1.14,.69-3.01,.64,2.53,1.36,2.24-.34,7.7,.45l-2.55,.17c1.65,.77,3.64,.49,6.53,.97-.69-.25-5.78-1.21-2.85-1.55,.83,.1,1.92,.15,3.5-.12,.01,.48,1.56,.36,3.5,.34l-.13,.64c2.09-.18,1.93-.51,3.16-.8,2.33,.06,2.82,.56,3.36,.98,3.73,.1-2.58-.79,1.84-.91,3.11,.24,5.29-.02,9-.4,2.17,.22-.38,.39,.4,.57l1.93-.51c.47,.01,.32,.17,.24,.25,1.62-.2,.13-.64,2.69-.81,.69-.7,5.24,1.03,8.4,.23,.78,.18-.38,.39-.14,.64,4.33-.52,3.72-.38,7.27-1.09l3.03,.42c-2.23-.48,.62-1.05,3.11-1.52-.79-.23-1.47-.43-1.92-.53l3.98-.34c.48,.1,.08,.32-.57,.59,.27-.05,.53-.11,.73-.15,1.42,.24,.69,.61-.33,.96-.48-.13-.97-.26-1.43-.39-.98,.39-1.9,.82-1.7,1.19,.26-.07,.76-.14,1.3-.17-.26,.11-.42,.2-.3,.26,.14,.07,.55-.07,1.2-.24l.9,.71,.22-.28,5.2,.45c3.72-.72,6.96-1.77,12.87-2.07-1.47,.52-.32,.85-.4,1.47-1.61-.66-4.58,.28-7.64,.15,1.6,.07,1.25,.36,.84,.47l5.46-.6c-.12,.51,1.16,.38,2.59,.59-1.08-1,4.07-.67,6.3-.97,.14,.34-.4,.68-3.11,.6,2.99,.75,3.87-1.18,6.8-.54-.66,0-1.02-.04-1.28,.13,1.55-.3,5.33-.06,4.44,.23h-.66c4.4,.13,13.38,.01,14.04-.84,.04,.11-.58,1.03-.84,1.2l7.84-2.86c-.69,.73,1.96,2.47-1.68,2.88,1.05,.1,2.34,.23,4.55-.03-.71-.1-1.78-1.06-.8-1.12,2.68,.81,1.86,.43,5.16,1.13-1.07-.16,.12-1.3,1.81-1.27-.26,.17,.14,1.13-.48,1.25l4.21-1.12c-1.05,.2-.19,.95,.76,1.27-.44-.22,3.64,.02,4.76-.09l-1.78-.26c4.75,.17,4.7-1.58,9.41-1.52-.57,.23-1.41,1.43,.99,1.57,1.1-.58,4.87-2.77,9.04-3.21l.8,.33,3.2-.38c-1.99,.87-7.59,2.69-10.64,3.4,1.78,.26,.5,.39,3.16,.36,.94,.31-1.45,.47-2.24,.49l6.2,.2c-.28-.67,4.74-.67,4.51-1.23l-6.74,.7c-.27-.67,3.9-1.91,8.29-1.79,1.12,.27-.84,1.2-.74,1.42,.57-.23,4.17-.44,4.58-.28l-1.86,.36c2.45,.25,3.99-.89,6.93-.25,1.01,.04,3.03,.87,3.21,.47-1.66-.77-1.98-3.14-.88-3.72,.36,.05,5.33,.73,6.49,1.11,1.67,.6-2.51,1.43-1.09,1.95,.06-.18,.98-.41,1.37-.48,1.07,.16-.44,.57,1.87,.49,.39-.68,4.71,.06,1.09-.58,2.27-.19,2.41,.14,5.07,.11-.85-.44,2.39-1.5,4.66-1.69-.13,.17,.38,.4,.62,.5,4.64,.06,7.14,.37,11.47,.38,.4,.17,2.49,.36,1.6,.66,.62-.12,1.19-.35,2.53-.37,2.58,.59-2.98,.09-1.01,.8,.17-.4,3.45-.55,5.36-.79-.59-.61-4.39-.12-6.3,.13,0-.84,3.31-1.73,7.83-2.12,3.6-.21,1.56,.55,2.18,.43,6.76,.15,5.76-1.47,11.37-.86,2.23,.54,.1,1.07,.59,1.46-2.93,.2-4.5-.34-6.48-.32l2.44,.25c-.93,.18-2.89,.31-3.95,.16,1.87,.48,11.41,.09,16.63,.54,.93-.18,2.52-.37,1.77-.58l-1.65,.08c-1.52-.43,3.1-.6,1.02-.8,2.21-.3,4.69-.78,7.81-.54l.59,.61c-.07-.18-2.04-.37-2.91-.18,1.3-.27,4.78,.83,6.2,.03l-2.18-.42c2.22-.31,4.97-.96,7.73-.77-1.26-.61-.64,.07-2.6-.64,1.7,.88-7.06-.04-4.33,.89-2.01-.82-3.48-.35-6.11-1.05,.08,.2,.93,.39-1.39,.29-.1,.06-.35,.13-.51,.18-.07,0-.1,0-.16-.02,.05,0,.08,.02,.13,.02-.1,.03-.11,.04,.05,0,.55,.09,1,.19,1.18,.31-1.15,.46-4.83,.45-6.08,.69-1.38-.1,.57-.23-.18-.45l-1.86,.36c-.18-.45-3.65-.75-.41-1.01l-2.92-.02c-1.72-.25-4.08-.35-5.53-.16-1.38-.1-3.47,.5-2.28,.15l-4.57,.28-.04-.11c-4.51-.06-9.29,.74-14.44-.07-1.52,.11-3.09,.25-5.63,.12l-.5-.39c-1.95,.14-5.86-.39-6.69,.02-2.1-1.05-9.46-.23-12.89-.41l-.13,.51c-2.36-.03-4.62,.12-7.55,.32l.18,.45c-2.53,.37-6.49-.32-10.49-.27,.27-.17,1.29-.13,2-.02-4.77-1.01-10.07,.74-14.4,0-1.08,.16-1.86,.11-2.62,0,.1,0,.19,0,.27-.02-.11,0-.27,0-.44,0-.48-.08-.97-.17-1.5-.24,.45,.11,.88,.2,1.26,.24-.83,0-2.09,.07-3.33,.18l-.53-.48c-.1,0-.18,0-.29,.01-1.21-.18-.98,.23-.33,.59-.62,.08-1.19,.17-1.64,.29-.99-.78-3.25,.26-4.59-.57-.83,.4-6.22,.3-6.88,1.15-.04-.11-.41-.16,.26-.17-1.38-.1-2.76-.19-3.99,.05l-.59-.61-3.01,.82c-1.83-.37-2.59-.59-.77-1.06-4.39,.72-3.56,.27-7.29,.99l.18-.4c-1.33,.02-3.46,.55-4.27,.22-2.98-.75-14.76-.1-22.41-.8,1.48,1.17-3.56-.52-3.86,.38-.45-.28-1.51-.43-.27-.67-3.91,.27-5.87-.44-8.57,.32-.45-.28,.84-.4,.44-.57-.31,.06-1.24,.24-1.65,.08-.4-.16,.57-.23,1.19-.35-3.99,.05-4.4,.9-4.69,1.69-2.02-.38-3.03-.32-4.49,.2-.7-.26-1.88-.53,.6-.63-1.4-.04-8.52-.38-8.67,.26-.44-.16-1.95-.05-2.32,.03-3.13-.04-3.41-.1-6.48-.04l.85,.1c-1.21,.77-2.56,.17-5.03,.26l.07-.08c-5.68-.56-2.45,.27-8.06-.37l.3,.48c-.52,1.03-4.97-.61-8.22-.21l1.17,.27c-1.78,.35-4.97-1.4-6.75-1.53-.39-.09,.61-.14,1.16-.21-4.67-.61-.61,.63-4.09,.77-.64-.34,.83-.86-1.52-.92-1.17-.27-6.8,1.1-9.99,.45,.7,.26,1.4,.52-.21,.72-2.48,.09-6.7-.99-8.94-.16-.32-.07-.43-.14-.45-.2-1.89,.21-6.16,.35-7.3,.8-1.75-1.66-11.78,.81-11.74-.72l-5.83,.08,.15-.16c-3.73-.1-5.04,.27-6.35,.63-.86-.1-.23-.25-.16-.33-5.44-.31-5.98-.24-10.55,.52l-.47-.5c-1.24,.29-7.87-.78-13.21-.2,.05-.06,.16-.15,.59-.22-6.01,.58-14.38-1.38-16.58,.43l-3.96,.44c5.13,.14-.76,.78,1.35,1.08-2.02,.11-5.21-.54-2.74-.64l.39,.09c.91-.94-6.37-.33-6.23-.97-10.09,.05-19.93-.47-29.38-.51l1.09,.73-3.3-.04c-.87-.17-1.16-.57,1.19-.54-1.24-.41-3.94,.35-4.01,.51-4.61-.3,1.8-.85,.39-.87l-1.92,.05,.43,.09c-1.55,.3-1.69,.62-4.52,.58-1.79-.15-.92-.45-1.62-.48,0-.05-.23-.08-1.08-.02l-4.15-.06,1.66,.58c-1.84,.28-3.91-.03-1.99,.62-2.81-1.01-15.5-.36-17.22-.68-2.58,.42-5.12,.41-8.28,.36,.78,.12,1.25,.77-1.47,.69,.99-1.34-4.98-.58-7.18-1.55,1.96,.64-7.73,.16-4.65,1.07-2.27-.11-.14-.5-1.86-.82-5.4,.52-11.9-.34-18.58-.16-.1,.18,1.01,.44-.42,.71l-3.52-.88c-1.32,.09-1.21,1.02-3.62,.4,.34,.15,.85,.37-.04,.43-13.08-.86-26.73,.7-40.01-.91,1.8,.34,.6,.37-.77,.39,.89,.08-.02,.43,.16,.67l-5.56-.66c-1.01,.66-5.96,.04-6.54,.68l1.76-.11c-2.34,.75,3.28,1.66,2.93,2.62,2.62-.85,6.91,1.26,11.22,.04,.95,.2-.81,.31-.3,.53,1.09-.41,2.41-.5,4.85-.31l-.28,.1c6.86-.1,9.8,.3,17.5,.57l-.57-.47c1.66,.06,2,.21,2.78,.33,1.9-.72-4.65-.04-2.92-.83,2.2,.96,11.67,.01,13.16,1.11,2.55,0-.75-.55,1.8-.54l.68,.3,.64-.38c1.67,.06,2.51,.43,2.57,.68-.41-.03-1.15,.07-1.59,.09,2.16,.35,6.1-.12,6.85,0l-2.45-.18c6.95-.28,15.43,.11,22.15-.49l-.51-.22c5.13-.41,4.11,.25,9.74,.05l-.2,.05c1.13-.22,2.63-.33,4.17-.31-1.42,.26,2.67,.51,.81,.8,5.56-.44,2.75-.35,6.42-1.18l.85,.37c1.25-.34,1.36-.51,4.17-.61-2.31,.32,1.79,.57-.79,.99,5.9,.81,8.76-.82,11.47,.37,2.71-1.03-5.11-.57-3.59-.79-1.27-.34,2.24-.77,4.09-.66,1.88,.02,3.2,1.31,7.94,1.29-.47,0-.5,.07-.97,.07,1.77,.26,3.48-.35,5.65,.07,1.22-.62,2.83,.04,3.18-.76l-4.35,.18c2.47-.21,4.78-1.13,8.84-.68-.32,.16-1.52,.37-2.36,.49,1.19,.23,2.29-.15,3.52,.08-.35,.79-5.28,.17-7.93,.78,1.27,.33,5-.57,3.67,.28,1.91-1.09,4.67,.14,7.88-.7l-.21,.47c.51-.07,1.56-.3,2.5-.29l-1.69,.62c2.6-.52,5.01,.46,7.5,.17-5.22,.01-1.17-.57-3.38-.92,6.44-.64,3.7,1.24,10.91,1.01-.98,.07-3.66-.29-2.14-.5,1.37,.1,3.18,.28,4.03,.53,4.78-.1-.73-.49,1.3-.78,1.63,.58,2.34-.24,4.44-.42v.48c5.46,.31,1.46-1.01,6.36-.63l-2.07,.67,2.55-.17-.53,.55c2.78-.41,3.64-.3,6.37-.15-.63-.34,.36-.88,2.77-.89,1.64,.29-.92,.46,2.5,.39-.77,.3-1.62,.68-3.1,.24-.15,.16-.76,.3-.92,.46,1.77,.33,4.45,.08,5.69,.07-.48-.02-1.05-.04-1.34-.11l4.95-.67c.78,.18,.16,.33-.45,.47,1-.05,1.7-.27,3.17-.32-.38,.39-.29,.8-2.38,.98l4.72-.44c.32,.17,2.42,.47,1.81,.61,2.62,.23,6.42-.76,9.89-.46,.18-.08,.54-.15,1.28-.21,3.26,.09,6.15,.57,10.01,.03l2.19,.7c3.03-.16-2.97-.89,2.07-1.15,3.57-.22,1.33,.6,2.58,.8,1.77-.35,4.86-1.08,8.14-.5-1.08,.13-1.94,.03-2.95,.08Zm37.32-.31c-.72,.1-2.16,.41-2.69,.13,.82-.55,1.46-.29,2.69-.13Zm56.73-1.16c-.54,.16-1.37,.08-2.31-.1,.68-.04,1.45-.02,2.31,.1Zm158.03-3.36s-.05,.01-.08,.02c-1.61-.19-1.04-.11,.08-.02Zm3.35,.21c.34-.07,.31-.13,.17-.2-.23,.12-.99,.13-1.84,.1,.24,.13,.67,.21,1.67,.11Zm-359.7,.19l.65,.13c-1.47,.14-1.06,.01-.65-.13Z" style="fill:#b0dff6;"/></g><g><path d="M6.89,82.3c-1.67-1.33-2.5-3.57-2.5-6.7s1.12-12.62,3.35-28.45c2.23-15.83,3.35-27.13,3.35-33.9s-.47-11.18-1.4-13.25c6.8,.53,11.27,3.2,13.4,8,5.13-2.8,10.78-4.2,16.95-4.2s11.03,1.92,14.6,5.75c3.57,3.83,5.35,8.55,5.35,14.15,0,6.93-2.54,13.2-7.6,18.8-2.47,2.67-5.65,4.83-9.55,6.5-3.9,1.67-8.22,2.5-12.95,2.5-2,0-3.9-.13-5.7-.4l-.3-4.2h.8c7.53,0,13.53-2.8,18-8.4,3.07-4,4.6-8.2,4.6-12.6,0-6.47-2.63-10.73-7.9-12.8-4.47-1.67-9.47-1.33-15,1v.2c0,2.53-.95,10.82-2.85,24.85-1.9,14.03-2.85,25.75-2.85,35.15,0,4.2,.2,7.47,.6,9.8-2.13,.13-3.53,.2-4.2,.2-3.8,0-6.53-.67-8.2-2Z" style="fill:#b0dff6;"/><path d="M80.19,50.1c2.4-8.67,5.28-15.05,8.65-19.15,3.37-4.1,6.5-6.15,9.4-6.15s5.08,1.08,6.55,3.25c1.47,2.17,2.2,4.97,2.2,8.4s-1.02,6.58-3.05,9.45c-2.03,2.87-4.82,4.3-8.35,4.3-.93,0-2.04-.27-3.3-.8,2.07-2.6,3.1-5.73,3.1-9.4,0-2.13-.87-3.2-2.6-3.2-1.27,0-2.63,.88-4.1,2.65-1.47,1.77-2.87,4.2-4.2,7.3-1.33,3.1-2.45,7.07-3.35,11.9-.9,4.83-1.35,9.98-1.35,15.45,0,.67,.17,3.5,.5,8.5-2.13,.13-3.5,.2-4.1,.2-3.8,0-6.53-.67-8.2-2-1.67-1.33-2.5-3.53-2.5-6.6,0-1.33,.7-6.46,2.1-15.4,1.4-8.93,2.1-16.05,2.1-21.35s-.57-10.18-1.7-14.65c4.87,1.53,8.27,3.72,10.2,6.55,1.93,2.83,2.9,6.13,2.9,9.9s-.3,7.38-.9,10.85Z" style="fill:#b0dff6;"/><path d="M132.39,23.5c.73,0,1.42,.22,2.05,.65,.63,.43,.95,.88,.95,1.35-6.73,4.67-10.77,11.17-12.1,19.5,1.4-3.73,3.12-6.97,5.15-9.7,2.03-2.73,4.15-4.8,6.35-6.2,4.2-2.6,8.3-3.9,12.3-3.9s7.4,1.97,10.2,5.9c2.8,3.93,4.2,9.2,4.2,15.8,0,7.4-1.5,14.2-4.5,20.4-3.33,7-8.07,11.83-14.2,14.5-3.47,1.53-7.27,2.3-11.4,2.3-5.8,0-10.85-2.25-15.15-6.75s-6.45-10.97-6.45-19.4,2.07-15.87,6.2-22.3c4.13-6.43,9.6-10.48,16.4-12.15Zm8.5,9c-4.33,0-8.2,2.92-11.6,8.75-3.4,5.83-5.1,11.65-5.1,17.45,0,12.13,3.13,18.2,9.4,18.2,4.47,0,8.1-2.92,10.9-8.75,2.8-5.83,4.2-12.38,4.2-19.65,0-10.67-2.6-16-7.8-16Z" style="fill:#b0dff6;"/><path d="M193.09,82.6c-2.13,.93-4.37,1.4-6.7,1.4s-3.63-.5-3.9-1.5c-1.07-4.27-2.3-10.65-3.7-19.15s-2.82-15.93-4.25-22.3c-1.43-6.37-3.15-11.18-5.15-14.45,3.67-1.73,6.6-2.6,8.8-2.6s3.87,.5,5,1.5c1.13,1,2.08,2.98,2.85,5.95,.77,2.97,1.32,5.42,1.65,7.35,.93,6.4,1.4,9.97,1.4,10.7s.27,3.72,.8,8.95c.53,5.23,.93,8.68,1.2,10.35,11.87-23,17.8-38.37,17.8-46.1,5.47,2.8,8.2,5.83,8.2,9.1,0,2.67-1.38,6.62-4.15,11.85-2.77,5.23-6.23,11.57-10.4,19-4.17,7.43-7.32,14.08-9.45,19.95Z" style="fill:#b0dff6;"/><path d="M241.34,48.65c-1.63,9.5-2.47,17.33-2.5,23.5-.03,6.17,.35,10.15,1.15,11.95-5.2-1.33-8.7-3.35-10.5-6.05s-2.7-6.65-2.7-11.85c0-2.8,.53-7.87,1.6-15.2,1.07-7.33,1.6-13.03,1.6-17.1s-.2-7.2-.6-9.4c1.47-.13,2.83-.2,4.1-.2,3.87,0,6.55,.65,8.05,1.95,1.5,1.3,2.25,3.52,2.25,6.65,0,1-.82,6.25-2.45,15.75Zm3.95-33.15c-1.87,.27-3.5,.4-4.9,.4-6.87,0-10.3-2.4-10.3-7.2,0-1.73,.5-4.1,1.5-7.1,1.87-.27,3.5-.4,4.9-.4,6.87,0,10.3,2.4,10.3,7.2,0,1.73-.5,4.1-1.5,7.1Z" style="fill:#b0dff6;"/><path d="M278.59,30.8c-1.87,0-3.53,.62-5,1.85-1.47,1.23-2.2,2.98-2.2,5.25s.78,4.4,2.35,6.4c1.57,2,3.48,3.75,5.75,5.25,2.27,1.5,4.55,3.03,6.85,4.6,2.3,1.57,4.32,3.5,6.05,5.8,1.73,2.3,2.7,4.85,2.9,7.65,0,4.8-2.07,8.83-6.2,12.1-4.13,3.27-9.27,4.9-15.4,4.9s-10.95-1.23-14.45-3.7-5.25-5.3-5.25-8.5,.98-5.78,2.95-7.75,4.42-2.95,7.35-2.95c1.53,0,2.97,.27,4.3,.8-2.13,2.27-3.2,4.67-3.2,7.2s.7,4.57,2.1,6.1c1.4,1.53,3.3,2.3,5.7,2.3s4.42-.62,6.05-1.85c1.63-1.23,2.45-2.83,2.45-4.8s-.57-3.71-1.7-5.25c-1.13-1.53-2.55-2.88-4.25-4.05-1.7-1.17-3.55-2.48-5.55-3.95-2-1.46-3.85-2.95-5.55-4.45-1.7-1.5-3.12-3.4-4.25-5.7-1.13-2.3-1.7-4.82-1.7-7.55,0-4.73,1.95-8.62,5.85-11.65,3.9-3.03,8.77-4.55,14.6-4.55s10.1,1.13,12.8,3.4c2.7,2.27,4.05,4.92,4.05,7.95s-.95,5.62-2.85,7.75c-1.9,2.13-4.35,3.2-7.35,3.2-1.47,0-3.13-.3-5-.9,1.47-1.27,2.6-2.71,3.4-4.35,.8-1.63,1.2-3.25,1.2-4.85s-.67-2.95-2-4.05c-1.33-1.1-2.93-1.65-4.8-1.65Z" style="fill:#b0dff6;"/><path d="M323.64,48.65c-1.63,9.5-2.47,17.33-2.5,23.5-.03,6.17,.35,10.15,1.15,11.95-5.2-1.33-8.7-3.35-10.5-6.05s-2.7-6.65-2.7-11.85c0-2.8,.53-7.87,1.6-15.2,1.07-7.33,1.6-13.03,1.6-17.1s-.2-7.2-.6-9.4c1.47-.13,2.83-.2,4.1-.2,3.87,0,6.55,.65,8.05,1.95,1.5,1.3,2.25,3.52,2.25,6.65,0,1-.82,6.25-2.45,15.75Zm3.95-33.15c-1.87,.27-3.5,.4-4.9,.4-6.87,0-10.3-2.4-10.3-7.2,0-1.73,.5-4.1,1.5-7.1,1.87-.27,3.5-.4,4.9-.4,6.87,0,10.3,2.4,10.3,7.2,0,1.73-.5,4.1-1.5,7.1Z" style="fill:#b0dff6;"/><path d="M360.09,23.5c.73,0,1.42,.22,2.05,.65,.63,.43,.95,.88,.95,1.35-6.73,4.67-10.77,11.17-12.1,19.5,1.4-3.73,3.12-6.97,5.15-9.7,2.03-2.73,4.15-4.8,6.35-6.2,4.2-2.6,8.3-3.9,12.3-3.9s7.4,1.97,10.2,5.9c2.8,3.93,4.2,9.2,4.2,15.8,0,7.4-1.5,14.2-4.5,20.4-3.34,7-8.07,11.83-14.2,14.5-3.47,1.53-7.27,2.3-11.4,2.3-5.8,0-10.85-2.25-15.15-6.75-4.3-4.5-6.45-10.97-6.45-19.4s2.07-15.87,6.2-22.3c4.13-6.43,9.6-10.48,16.4-12.15Zm8.5,9c-4.33,0-8.2,2.92-11.6,8.75-3.4,5.83-5.1,11.65-5.1,17.45,0,12.13,3.13,18.2,9.4,18.2,4.47,0,8.1-2.92,10.9-8.75,2.8-5.83,4.2-12.38,4.2-19.65,0-10.67-2.6-16-7.8-16Z" style="fill:#b0dff6;"/><path d="M438.99,24.9c3.93,0,6.75,1.22,8.45,3.65,1.7,2.43,2.55,5.73,2.55,9.9s-.65,10.02-1.95,17.55c-1.3,7.53-1.95,13.02-1.95,16.45s.43,5.93,1.3,7.5c.87,1.57,2.33,2.92,4.4,4.05-.87,.07-2.1,.1-3.7,.1-5.6,0-9.58-.87-11.95-2.6-2.37-1.73-3.55-4.77-3.55-9.1,0-2.47,.67-7.28,2-14.45,1.33-7.17,2-12.52,2-16.05,0-4.4-1.33-6.6-4-6.6-1.54,0-3.27,.9-5.2,2.7-1.93,1.8-3.8,4.25-5.6,7.35-1.8,3.1-3.3,7.08-4.5,11.95-1.2,4.87-1.8,9.72-1.8,14.55s.2,8.42,.6,10.75c-2.13,.13-3.54,.2-4.2,.2-3.8,0-6.53-.67-8.2-2-1.67-1.33-2.5-3.53-2.5-6.6,0-1.33,.7-6.46,2.1-15.4,1.4-8.93,2.1-16.05,2.1-21.35s-.57-10.18-1.7-14.65c4.87,1.53,8.27,3.72,10.2,6.55,1.93,2.83,2.9,6.07,2.9,9.7s-.4,7.85-1.2,12.65c2.2-7.46,5.67-13.8,10.4-19,4.73-5.2,9.07-7.8,13-7.8Z" style="fill:#b0dff6;"/><path d="M480.04,48.65c-1.63,9.5-2.47,17.33-2.5,23.5-.03,6.17,.35,10.15,1.15,11.95-5.2-1.33-8.7-3.35-10.5-6.05-1.8-2.7-2.7-6.65-2.7-11.85,0-2.8,.53-7.87,1.6-15.2,1.07-7.33,1.6-13.03,1.6-17.1s-.2-7.2-.6-9.4c1.47-.13,2.83-.2,4.1-.2,3.87,0,6.55,.65,8.05,1.95,1.5,1.3,2.25,3.52,2.25,6.65,0,1-.82,6.25-2.45,15.75Zm3.95-33.15c-1.87,.27-3.5,.4-4.9,.4-6.87,0-10.3-2.4-10.3-7.2,0-1.73,.5-4.1,1.5-7.1,1.87-.27,3.5-.4,4.9-.4,6.87,0,10.3,2.4,10.3,7.2,0,1.73-.5,4.1-1.5,7.1Z" style="fill:#b0dff6;"/><path d="M533.69,24.9c3.93,0,6.75,1.22,8.45,3.65,1.7,2.43,2.55,5.73,2.55,9.9s-.65,10.02-1.95,17.55c-1.3,7.53-1.95,13.02-1.95,16.45s.43,5.93,1.3,7.5c.87,1.57,2.33,2.92,4.4,4.05-.87,.07-2.1,.1-3.7,.1-5.6,0-9.58-.87-11.95-2.6-2.37-1.73-3.55-4.77-3.55-9.1,0-2.47,.67-7.28,2-14.45,1.33-7.17,2-12.52,2-16.05,0-4.4-1.33-6.6-4-6.6-1.54,0-3.27,.9-5.2,2.7-1.93,1.8-3.8,4.25-5.6,7.35-1.8,3.1-3.3,7.08-4.5,11.95-1.2,4.87-1.8,9.72-1.8,14.55s.2,8.42,.6,10.75c-2.13,.13-3.54,.2-4.2,.2-3.8,0-6.53-.67-8.2-2-1.67-1.33-2.5-3.53-2.5-6.6,0-1.33,.7-6.46,2.1-15.4,1.4-8.93,2.1-16.05,2.1-21.35s-.57-10.18-1.7-14.65c4.87,1.53,8.27,3.72,10.2,6.55,1.93,2.83,2.9,6.07,2.9,9.7s-.4,7.85-1.2,12.65c2.2-7.46,5.67-13.8,10.4-19,4.73-5.2,9.07-7.8,13-7.8Z" style="fill:#b0dff6;"/><path d="M588.59,25.9c1.27,0,2.23,.07,2.9,.2,1.73,.33,2.67,1.57,2.8,3.7-7.27,1.53-13.05,5.47-17.35,11.8-4.3,6.33-6.45,12.93-6.45,19.8,0,8,2.43,12,7.3,12,2.93,0,5.57-1.6,7.9-4.8,4.13-5.8,7.03-14.87,8.7-27.2,1.27-9.73,3.63-16,7.1-18.8,1.67-1.4,3.73-2.5,6.2-3.3-.93,7.07-1.4,12.4-1.4,16,0,26.67-2.85,46.7-8.55,60.1-5.7,13.4-14.98,20.1-27.85,20.1-5.2,0-9.27-1.38-12.2-4.15-2.93-2.77-4.4-5.8-4.4-9.1s1.03-6,3.1-8.1c2.07-2.1,4.96-3.15,8.7-3.15,1.53,0,3.1,.33,4.7,1-2.53,1.67-3.8,4.23-3.8,7.7,0,2.33,.7,4.35,2.1,6.05,1.4,1.7,3.12,2.55,5.15,2.55s3.82-.42,5.35-1.25c1.53-.83,3.1-2.32,4.7-4.45,1.6-2.13,3-4.8,4.2-8,2.73-7.4,4.23-17.5,4.5-30.3-1.93,5.73-4.87,10.33-8.8,13.8-3.93,3.47-7.93,5.2-12,5.2-5.13,0-9.05-1.95-11.75-5.85-2.7-3.9-4.05-8.88-4.05-14.95,0-7.07,1.7-13.63,5.1-19.7,3.8-7,9.07-11.87,15.8-14.6,3.73-1.53,7.83-2.3,12.3-2.3Z" style="fill:#b0dff6;"/></g></g></g>
</g>
<text x="1002" y="38" text-anchor="middle" fill="#a0b0c0" font-family="'IBM Plex Mono',monospace" font-size="10" letter-spacing="3">CONTROL PLANE ARCHITECTURE</text>
<line x1="872" y1="46" x2="1132" y2="46" stroke="#888" stroke-width="0.8"/>
<!-- ═══ CLI ═══ -->
<g>
<rect x="235" y="104" width="140" height="68" rx="8" fill="url(#cli-grad)" filter="url(#soft-shadow)"/>
<rect x="235" y="104" width="140" height="68" rx="8" fill="none" stroke="#1c2a3a" stroke-width="1"/>
<rect x="235" y="107" width="3" height="62" rx="1.5" fill="#4a9eff" opacity="0.6"/>
<circle cx="256" cy="118" r="7" fill="#2d3748" stroke="#4a9eff" stroke-width="1" opacity="0.8"/>
<text x="256" y="121" text-anchor="middle" fill="#4a9eff" font-size="8" font-family="'IBM Plex Mono',monospace">$</text>
<text x="265" y="123" fill="#4a9eff" font-family="'DM Sans',sans-serif" font-weight="600" font-size="11">CLI</text>
<text x="270" y="148" fill="#6b8aaa" font-family="'IBM Plex Mono',monospace" font-size="8">provisioning</text>
</g>
<!-- Arrow: CLI → Orchestrator -->
<line x1="640" y1="98" x2="640" y2="115" stroke="#4a9eff" stroke-width="1.5" stroke-dasharray="5 3" class="spoke" opacity="0.7" marker-end="url(#arr-blue)"/>
<!-- ═══════════════════════════════════════ -->
<!-- NATS ORBITAL RING SYSTEM -->
<!-- ═══════════════════════════════════════ -->
<!-- Ring outer glow -->
<circle cx="640" cy="320" r="138" fill="none" stroke="#94a3b8" stroke-width="10" opacity="0.04" class="ring-glow" filter="url(#ring-glow-f)"/>
<!-- Main orbit ring (flowing dashes) -->
<circle cx="640" cy="320" r="135" fill="none" stroke="#94a3b8" stroke-width="2" stroke-dasharray="10 8" class="orbit-flow" opacity="0.45"/>
<!-- ═══ INFINITY ENGINE (∞ dual-wheel perpetual motion from logo) ═══ -->
<!-- Centered at (640,310), scale 0.55 from original logo coordinates -->
<!-- Left wheel center: (115.86, 113.25) | Right wheel center: (261.91, 113.28) -->
<g transform="translate(640, 310) scale(0.55) translate(-188.88, -113.27)" opacity="0.85">
<!-- Background circle with CLI gradient -->
<rect x="100" y="40" width="178" height="146" rx="12" style="fill:url(#cli-grad); opacity:0.35;"/>
<circle cx="188.88" cy="113.27" r="50" style="fill:url(#cli-grad); opacity:0.3;"/>
<!-- Left wheel — clockwise 8s (outline only) -->
<g>
<path d="M3.04,87.53c-3.66,16.4-3.36,33.43,.85,49.7l18.49-.31c2.12,7.08,5.09,13.89,8.85,20.26l-12.81,13.12c9.22,14.08,21.56,25.9,36.09,34.55l12.81-13.13c6.56,3.51,13.52,6.22,20.74,8.08l.31,18.3c16.56,3.62,33.75,3.33,50.18-.85l-.31-18.3c7.15-2.1,14.02-5.04,20.46-8.77l13.25,12.69c14.22-9.14,26.14-21.36,34.87-35.75l-13.25-12.68c3.54-6.5,6.28-13.4,8.15-20.55l18.49-.31c3.65-16.4,3.36-33.43-.85-49.7l-18.49,.31c-2.12-7.08-5.09-13.88-8.85-20.26l12.8-13.12c-9.22-14.08-21.56-25.9-36.08-34.55l-12.81,13.13c-6.56-3.51-13.53-6.23-20.75-8.08l-.31-18.3c-16.56-3.62-33.75-3.33-50.18,.85l.31,18.3c-7.15,2.1-14.01,5.04-20.45,8.77l-13.25-12.69c-14.22,9.14-26.15,21.36-34.88,35.75l13.25,12.68c-3.54,6.5-6.28,13.4-8.15,20.55l-18.49,.31Z" style="fill:none; fill-rule:evenodd; stroke:#4cc2f1; stroke-miterlimit:10; stroke-width:1.2; opacity:0.85;">
<animateTransform attributeName="transform" type="rotate" values="0 115.86 113.25;360 115.86 113.25" dur="8s" repeatCount="indefinite"/>
</path>
</g>
<!-- Right wheel — counter-clockwise 6s (outline only) -->
<g>
<path d="M167.28,92.87c-3.19,14.31-2.94,29.17,.74,43.37l16.13-.27c1.85,6.18,4.44,12.12,7.72,17.68l-11.18,11.45c8.05,12.29,18.82,22.6,31.49,30.15l11.18-11.46c5.72,3.06,11.8,5.43,18.1,7.05l.27,15.97c14.45,3.16,29.45,2.91,43.78-.74l-.27-15.97c6.24-1.83,12.23-4.4,17.85-7.66l11.56,11.08c12.41-7.97,22.81-18.64,30.43-31.19l-11.56-11.06c3.09-5.67,5.48-11.69,7.11-17.93l16.13-.27c3.18-14.31,2.93-29.17-.74-43.37l-16.13,.27c-1.85-6.18-4.44-12.11-7.72-17.68l11.17-11.44c-8.04-12.29-18.81-22.6-31.48-30.15l-11.18,11.46c-5.72-3.07-11.8-5.43-18.1-7.05l-.27-15.97c-14.45-3.16-29.45-2.91-43.78,.74l.27,15.97c-6.24,1.83-12.23,4.4-17.84,7.66l-11.56-11.08c-12.41,7.97-22.81,18.64-30.44,31.19l11.56,11.06c-3.09,5.67-5.48,11.69-7.11,17.93l-16.13,.27Z" style="fill:none; fill-rule:evenodd; stroke:#4cc2f1; stroke-miterlimit:10; stroke-width:1.2; opacity:0.85;">
<animateTransform attributeName="transform" type="rotate" values="0 261.91 113.28;-360 261.91 113.28" dur="6s" repeatCount="indefinite"/>
</path>
</g>
<!-- Left wheel golden center (strong original colors) -->
<path d="M115.86,78.19c19.55,0,35.4,15.7,35.4,35.06s-15.85,35.06-35.4,35.06-35.4-15.7-35.4-35.06,15.85-35.06,35.4-35.06" style="fill:#f2b03f; opacity:0.9;"/>
<ellipse cx="116.42" cy="115.68" rx="20.17" ry="20.15" style="fill:none; stroke:#4159a4; stroke-miterlimit:10; stroke-width:1.58px; opacity:0.8;"/>
<path d="M116.42,107.88c4.35-.04,7.91,3.43,7.95,7.73,.04,4.31-3.46,7.83-7.81,7.87-4.35,.04-7.91-3.43-7.95-7.73,0-.02,0-.05,0-.07-.02-4.29,3.48-7.78,7.81-7.8" style="fill:#fff; opacity:0.8;"/>
<!-- Right wheel golden center (strong original colors) -->
<ellipse cx="261.91" cy="113.28" rx="35.65" ry="35.31" style="fill:#f9b224; opacity:0.9;"/>
<!-- Right wheel — dashboard display (simplified from logo chronometer) -->
<circle cx="261.91" cy="113.28" r="26" style="fill:#3d5070; opacity:0.85;"/>
<!-- Window controls (3 dots) -->
<circle cx="243" cy="95" r="1.2" style="fill:#d68a87; opacity:0.6;"/>
<circle cx="247" cy="95" r="1.2" style="fill:#c9a558; opacity:0.6;"/>
<circle cx="251" cy="95" r="1.2" style="fill:#5a7093; opacity:0.6;"/>
<!-- Terminal header bar -->
<rect x="243" y="99" width="38" height="3.2" rx="1.5" style="fill:#6a7a98; opacity:0.5;"/>
<!-- Status bars (staggered widths = data readout) -->
<rect x="243" y="105" width="28" height="2.8" rx="1" style="fill:#7a8aaa; opacity:0.5;"/>
<rect x="243" y="110" width="34" height="2.8" rx="1" style="fill:#a89870; opacity:0.5;"/>
<rect x="243" y="115" width="20" height="2.8" rx="1" style="fill:#6a7a8a; opacity:0.4;"/>
<rect x="243" y="120" width="30" height="2.8" rx="1" style="fill:#7a8aaa; opacity:0.4;"/>
<!-- Green health indicator -->
<circle cx="271" cy="127" r="5.5" style="fill:#4a9e8f; opacity:0.7;">
<animate attributeName="opacity" values="0.7;0.4;0.7" dur="2s" repeatCount="indefinite"/>
</circle>
<!-- Animated checkmark -->
<path d="M268,126.5l2.5,2.5,4.2-4.2" style="fill:none; stroke:#a0c0b0; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; opacity:0.8;">
<animate attributeName="stroke-dasharray" values="0 15;15 15" dur="1.5s" repeatCount="indefinite"/>
</path>
<!-- ∞ path segments — staggered color cycling -->
<!-- Top left of ∞ -->
<path d="M225.8,83.92c1.22-1.35,2.46-2.66,3.75-3.94,16.69-16.54,43.22-18.12,61.79-3.68l17.46-2.65,2.57-16.63c-29.5-25.42-73.83-23.89-101.47,3.5-1.24,1.23-2.45,2.49-3.63,3.77l16.89,2.56,2.64,17.07Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
<animate attributeName="fill" values="#5e74b7;#00D4FF;#7B2BFF;#00FFB3;#5e74b7" dur="2s" repeatCount="indefinite"/>
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" repeatCount="indefinite"/>
</path>
<!-- Bottom left of ∞ -->
<path d="M78.59,141.18c-14.54-18.4-12.95-44.65,3.71-61.2,1.33-1.31,2.73-2.54,4.2-3.68l-17.46-2.65-2.57-16.63c-1.3,1.13-2.58,2.28-3.82,3.5-27.79,27.53-28.96,71.57-3.53,100.51l16.79-2.55,2.67-17.3Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
<animate attributeName="fill" values="#5e74b7;#7B2BFF;#00FFB3;#00D4FF;#5e74b7" dur="2s" begin="0.5s" repeatCount="indefinite"/>
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" begin="0.5s" repeatCount="indefinite"/>
</path>
<!-- Top right of ∞ -->
<path d="M86.5,76.3c18.57-14.44,45.1-12.86,61.79,3.68,1.29,1.27,2.53,2.6,3.75,3.94l2.64-17.07,16.89-2.56c-1.18-1.28-2.39-2.54-3.63-3.77-27.64-27.39-71.97-28.92-101.48-3.5l2.57,16.63,17.46,2.65Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
<animate attributeName="fill" values="#8d9ccf;#00FFB3;#00D4FF;#7B2BFF;#8d9ccf" dur="2s" begin="1s" repeatCount="indefinite"/>
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" begin="1s" repeatCount="indefinite"/>
</path>
<!-- Bottom right of ∞ -->
<path d="M299.26,141.18c-15.88,20.08-45.19,23.61-65.46,7.88l-.04-.03-17.46,2.65-2.57,16.63c29.5,25.42,73.83,23.89,101.47-3.5,1.24-1.22,2.4-2.49,3.53-3.78l-16.79-2.55-2.68-17.3Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
<animate attributeName="fill" values="#8d9ccf;#7B2BFF;#00D4FF;#00FFB3;#8d9ccf" dur="2s" begin="1.5s" repeatCount="indefinite"/>
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" begin="1.5s" repeatCount="indefinite"/>
</path>
<!-- ∞ connector arcs (static deep blue) -->
<path d="M315.19,60.52c-1.23-1.22-2.51-2.38-3.82-3.5l-2.57,16.63-17.46,2.65c1.47,1.14,2.88,2.37,4.2,3.68,16.66,16.55,18.25,42.8,3.71,61.2l2.68,17.3,16.79,2.55c25.42-28.93,24.26-72.98-3.53-100.5m-171.1,88.5c-20.2,15.76-49.48,12.31-65.39-7.7-.04-.05-.08-.1-.12-.15l-2.68,17.3-16.79,2.55c1.13,1.29,2.3,2.56,3.53,3.78,27.64,27.39,71.97,28.92,101.47,3.5l-2.57-16.63-17.46-2.65Z" style="fill:#455aa5; stroke:#3a5a7a; stroke-miterlimit:10;"/>
<!-- ∞ transition pieces -->
<path d="M204.38,103.42c1.09,1.79,2.17,3.56,3.25,5.32,5.65-8.96,11.44-17.4,18.17-24.81l-2.64-17.07-16.89-2.56c-5.38,5.87-10.34,12.11-14.83,18.68,4.58,6.77,8.8,13.66,12.94,20.45m-30.92,18.5c-1.09-1.79-2.18-3.56-3.25-5.32-6.68,10.59-13.53,20.44-21.92,28.75-1.33,1.31-2.73,2.54-4.21,3.68l17.46,2.65,2.57,16.63c1.3-1.12,2.58-2.28,3.82-3.5,6.84-6.9,13.02-14.41,18.46-22.43-4.57-6.76-8.78-13.66-12.93-20.46" style="fill:#8d9ccf; stroke:#5a7a90; stroke-miterlimit:10;"/>
<!-- Central flow — animated infinity gradient -->
<path d="M171.57,64.29c11.77,12.66,20.64,27.17,29.24,41.26,9,14.74,17.5,28.67,28.74,39.8,1.33,1.31,2.73,2.54,4.21,3.68l-17.46,2.65-2.57,16.63c-1.3-1.12-2.58-2.27-3.82-3.5-13.63-13.5-23.41-29.52-32.87-45.02-7.97-13.05-15.55-25.46-24.99-35.86l2.64-17.07,16.89-2.56Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
<animate attributeName="fill" values="#00D4FF;#7B2BFF;#00FFB3;#00D4FF" dur="3s" repeatCount="indefinite"/>
<animate attributeName="stroke-width" values="0.5;3;0.5" dur="3s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="0.8;1;0.8" dur="3s" repeatCount="indefinite"/>
</path>
</g>
<!-- Hub labels (below infinity engine) -->
<text x="640" y="403" text-anchor="middle" fill="#94a3b8" font-family="'DM Sans',sans-serif" font-weight="700" font-size="15" letter-spacing="1.2" opacity="0.7">Events Stream</text>
<text x="640" y="429" text-anchor="middle" fill="#5a6278" font-family="'IBM Plex Mono',monospace" font-size="7">NATS JetStream</text>
<text x="640" y="440" text-anchor="middle" fill="#5a6278" font-family="'IBM Plex Mono',monospace" font-size="7">:4222</text>
<!-- ═══════════════════════════════════════ -->
<!-- SATELLITE SERVICES -->
<!-- ═══════════════════════════════════════ -->
<!-- ─── ORCHESTRATOR (top, 0°) ─── -->
<g>
<rect x="505" y="60" width="270" height="110" rx="14" fill="none" stroke="#f59e0b" stroke-width="1.5" stroke-dasharray="8 4" class="solid-border"/>
<rect x="515" y="70" width="250" height="90" rx="10" fill="url(#orch-grad)" filter="url(#soft-shadow)"/>
<rect x="515" y="70" width="250" height="90" rx="10" fill="none" stroke="#3a2e1c" stroke-width="1"/>
<rect x="515" y="73" width="3" height="84" rx="1.5" fill="#f59e0b" opacity="0.5"/>
<circle cx="535" cy="92" r="8" fill="#2d3748" stroke="#f59e0b" stroke-width="1" opacity="0.8"/>
<text x="535" y="96" text-anchor="middle" fill="#f59e0b" font-size="9"></text>
<text x="553" y="95" fill="#f59e0b" font-family="'DM Sans',sans-serif" font-weight="700" font-size="13" letter-spacing="0.5">Orchestrator</text>
<text x="740" y="95" text-anchor="end" fill="#f59e0b" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9011</text>
<circle cx="752" cy="92" r="3.5" fill="#f59e0b" class="health"/>
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#a8a8a8">
<rect x="528" y="113" width="220" height="14" rx="4" fill="#100b05" stroke="#2a2016" stroke-width="0.5"/>
<text x="638" y="123" text-anchor="middle" opacity="0.6">Task State Machine • Provider API • SSH</text>
<rect x="528" y="137" width="220" height="14" rx="4" fill="#100b05" stroke="#2a2016" stroke-width="0.5"/>
<text x="638" y="147" text-anchor="middle" opacity="0.55">Webhooks • Rollback • Audit Collector</text>
</g>
</g>
<!-- ─── CONFIGURATION (top-right, cylinder) ─── -->
<g>
<ellipse cx="990" cy="152" rx="70" ry="11" fill="#10b981" opacity="0.12" stroke="none"/>
<path d="M 920 152 Q 990 179 1060 152" stroke="#10b981" stroke-width="0.8" fill="none" stroke-dasharray="4 2" opacity="0.4"/>
<rect x="920" y="91" width="140" height="61" rx="3" fill="#10b981" stroke="none" opacity="0.06" filter="url(#soft-shadow)"/>
<ellipse cx="990" cy="91" rx="70" ry="13" fill="#10b981" opacity="0.35" stroke="none"/>
<text x="990" y="126" text-anchor="middle" fill="#10b981" font-family="'DM Sans',sans-serif" font-weight="700" font-size="12" letter-spacing="0.5">Configuration</text>
<text x="990" y="152" text-anchor="middle" fill="#10b981" font-family="'IBM Plex Mono',monospace" font-size="7" opacity="0.6">Nickel • ∞ TypeDialog</text>
</g>
<!-- ─── CONTROL CENTER (72°, upper-right) ─── -->
<g>
<rect x="241" y="248" width="250" height="110" rx="10" fill="url(#ctrl-grad)" filter="url(#soft-shadow)"/>
<rect x="241" y="248" width="250" height="110" rx="10" fill="none" stroke="#2e2848" stroke-width="1"/>
<rect x="241" y="251" width="3" height="104" rx="1.5" fill="#818cf8" opacity="0.5"/>
<circle cx="263" cy="270" r="8" fill="#2d3748" stroke="#818cf8" stroke-width="1" opacity="0.8"/>
<text x="263" y="274" text-anchor="middle" fill="#818cf8" font-size="9"></text>
<text x="279" y="273" fill="#818cf8" font-family="'DM Sans',sans-serif" font-weight="700" font-size="13" letter-spacing="0.5">Control Center</text>
<text x="461" y="273" text-anchor="end" fill="#818cf8" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9012</text>
<circle cx="473" cy="270" r="3.5" fill="#818cf8" class="health health-d1"/>
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#9090b8">
<rect x="254" y="301" width="220" height="14" rx="4" fill="#070514" stroke="#1a1630" stroke-width="0.5"/>
<text x="364" y="311" text-anchor="middle" opacity="0.9">Cedar Policies • JWT • Sessions</text>
<rect x="254" y="325" width="220" height="14" rx="4" fill="#070514" stroke="#1a1630" stroke-width="0.5"/>
<text x="364" y="335" text-anchor="middle" opacity="0.85">WebSocket • RBAC • Solo: auto-session</text>
</g>
</g>
<!-- ─── EXTENSION REGISTRY (144°, lower-right) ─── -->
<g>
<rect x="732" y="430" width="250" height="110" rx="10" fill="url(#ext-grad)" filter="url(#soft-shadow)"/>
<rect x="732" y="430" width="250" height="110" rx="10" fill="none" stroke="#3a1c28" stroke-width="1"/>
<rect x="978" y="433" width="3" height="104" rx="1.5" fill="#ef4444" opacity="0.5"/>
<circle cx="754" cy="452" r="8" fill="#2d3748" stroke="#ef4444" stroke-width="1" opacity="0.8"/>
<text x="754" y="456" text-anchor="middle" fill="#ef4444" font-size="9"></text>
<text x="770" y="455" fill="#ef4444" font-family="'DM Sans',sans-serif" font-weight="700" font-size="12" letter-spacing="0.5">Extensions Registry</text>
<text x="952" y="455" text-anchor="end" fill="#ef4444" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:8084</text>
<circle cx="964" cy="452" r="3.5" fill="#ef4444" class="health health-d3"/>
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#9a7878">
<rect x="745" y="483" width="220" height="14" rx="4" fill="#10050a" stroke="#2a1620" stroke-width="0.5"/>
<text x="855" y="493" text-anchor="middle" opacity="0.9">Git • OCI • LRU</text>
<rect x="745" y="507" width="220" height="14" rx="4" fill="#10050a" stroke="#2a1620" stroke-width="0.5"/>
<text x="855" y="517" text-anchor="middle" opacity="0.85">Providers • Taskservs • vault:// creds</text>
</g>
</g>
<!-- ─── AI/MCP (216°, lower-left) ─── -->
<g>
<rect x="298" y="430" width="250" height="110" rx="10" fill="url(#mcp-grad)" filter="url(#soft-shadow)"/>
<rect x="298" y="430" width="250" height="110" rx="10" fill="none" stroke="#1c3038" stroke-width="1"/>
<rect x="298" y="433" width="3" height="104" rx="1.5" fill="#22d3ee" opacity="0.5"/>
<circle cx="320" cy="452" r="8" fill="#2d3748" stroke="#22d3ee" stroke-width="1" opacity="0.8"/>
<text x="320" y="456" text-anchor="middle" fill="#22d3ee" font-size="9">🧠</text>
<text x="336" y="455" fill="#22d3ee" font-family="'DM Sans',sans-serif" font-weight="700" font-size="12" letter-spacing="0.5">AI • MCP</text>
<text x="523" y="455" text-anchor="end" fill="#22d3ee" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9082</text>
<circle cx="535" cy="452" r="3.5" fill="#22d3ee" class="health health-d2"/>
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#7aa8a8">
<rect x="311" y="483" width="220" height="14" rx="4" fill="#041618" stroke="#0f2a2e" stroke-width="0.5"/>
<text x="421" y="493" text-anchor="middle" opacity="0.9">RAG Engine • MCP Server • Tools</text>
<rect x="311" y="507" width="220" height="14" rx="4" fill="#041618" stroke="#0f2a2e" stroke-width="0.5"/>
<text x="421" y="517" text-anchor="middle" opacity="0.85">Embeddings • Model Routing • KGraph</text>
</g>
</g>
<!-- ─── VAULT SERVICE (288°, upper-left) ─── -->
<g>
<rect x="789" y="248" width="250" height="110" rx="10" fill="url(#vault-grad)" filter="url(#soft-shadow)"/>
<rect x="789" y="248" width="250" height="110" rx="10" fill="none" stroke="#3a1c30" stroke-width="1"/>
<rect x="1035" y="251" width="3" height="104" rx="1.5" fill="#ec4899" opacity="0.5"/>
<circle cx="811" cy="270" r="8" fill="#2d3748" stroke="#ec4899" stroke-width="1" opacity="0.8"/>
<text x="811" y="274" text-anchor="middle" fill="#ec4899" font-size="9">🛡</text>
<text x="827" y="273" fill="#ec4899" font-family="'DM Sans',sans-serif" font-weight="700" font-size="13" letter-spacing="0.5">Vault Service</text>
<text x="1009" y="273" text-anchor="end" fill="#ec4899" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9094</text>
<circle cx="1021" cy="270" r="3.5" fill="#ec4899" class="health health-d4"/>
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#9a8090">
<rect x="802" y="301" width="220" height="14" rx="4" fill="#100514" stroke="#2a1630" stroke-width="0.5"/>
<text x="912" y="311" text-anchor="middle" opacity="0.9">Lease Lifecycle • Key Management</text>
<rect x="802" y="325" width="220" height="14" rx="4" fill="#100514" stroke="#2a1630" stroke-width="0.5"/>
<text x="912" y="335" text-anchor="middle" opacity="0.85">SOPS • Age • Secrets never in NATS</text>
</g>
</g>
<!-- ═══ VERTICAL ARROW: CONFIGURATION → VAULT ═══ -->
<line x1="995" y1="169" x2="995" y2="248" stroke="#10b981" stroke-width="1.5" stroke-dasharray="4 3" opacity="0.35" marker-end="url(#arr-green-sm)"/>
<!-- ═══ VERTICAL ARROW: CLI → CONTROL CENTER ═══ -->
<line x1="305" y1="177" x2="305" y2="248" stroke="#10b981" stroke-width="1.5" stroke-dasharray="4 3" opacity="0.35" marker-end="url(#arr-green-sm)"/>
<!-- ═══ CLI → ORCHESTRATOR CURVE ═══ -->
<path d="M 375 138 C 430 100 480 80 505 120" fill="none" stroke="#fbbf24" stroke-width="1.2" stroke-dasharray="3 2" opacity="0.5"/>
<!-- ═══ CONFIGURATION → ORCHESTRATOR CURVE ═══ -->
<path d="M 920 128 C 850 90 800 70 775 120" fill="none" stroke="#fbbf24" stroke-width="1.2" stroke-dasharray="3 2" opacity="0.5"/>
<!-- ═══ CLI → AI CURVE ═══ -->
<path d="M 235 138 C 150 250 200 350 300 444" fill="none" stroke="#fbbf24" stroke-width="1.2" stroke-dasharray="3 2" opacity="0.5"/>
<!-- ═══ CONFIGURATION → EXT CURVE ═══ -->
<path d="M 1060 128 C 1145 240 1095 340 979 444" fill="none" stroke="#fbbf24" stroke-width="1.2" stroke-dasharray="3 2" opacity="0.5"/>
<!-- ═══ HTTPS CREDENTIAL BEAM ═══ -->
<path d="M 505 168 C 450 187 420 217 447 245" fill="none" stroke="#4a9eff" stroke-width="2" class="https-beam" filter="url(#glow-blue)"/>
<path d="M 505 168 C 450 187 420 217 447 245" fill="none" stroke="#4a9eff" stroke-width="1" stroke-dasharray="4 3" class="https-beam" opacity="0.4"/>
<path d="M 447 245 C 420 217 450 187 505 168" fill="none" stroke="#4a9eff" stroke-width="2" class="https-beam" filter="url(#glow-blue)"/>
<path d="M 447 245 C 420 217 450 187 505 168" fill="none" stroke="#4a9eff" stroke-width="1" stroke-dasharray="4 3" class="https-beam" opacity="0.4"/>
<text x="475" y="209" fill="#4a9eff" font-family="'IBM Plex Mono',monospace" font-size="7" font-weight="700" class="https-label">HTTPS</text>
<path d="M 775 168 C 830 187 860 217 833 245" fill="none" stroke="#4a9eff" stroke-width="2" class="https-beam" filter="url(#glow-blue)"/>
<path d="M 775 168 C 830 187 860 217 833 245" fill="none" stroke="#4a9eff" stroke-width="1" stroke-dasharray="4 3" class="https-beam" opacity="0.4"/>
<path d="M 833 245 C 860 217 830 187 775 168" fill="none" stroke="#4a9eff" stroke-width="2" class="https-beam" filter="url(#glow-blue)"/>
<path d="M 833 245 C 860 217 830 187 775 168" fill="none" stroke="#4a9eff" stroke-width="1" stroke-dasharray="4 3" class="https-beam" opacity="0.4"/>
<text x="803" y="209" fill="#4a9eff" font-family="'IBM Plex Mono',monospace" font-size="7" font-weight="700" class="https-label">HTTPS</text>
<!-- ═══ ORBITAL PARTICLES ═══ -->
<circle r="3.5" fill="#f59e0b" opacity="0" filter="url(#glow-orange)">
<animateMotion dur="8s" begin="0s" repeatCount="indefinite">
<mpath href="#orbit-cw"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.9;0.9;0" keyTimes="0;0.05;0.92;1" dur="8s" repeatCount="indefinite"/>
</circle>
<circle r="2.5" fill="#ec4899" opacity="0" filter="url(#glow-pink)">
<animateMotion dur="10s" begin="2s" repeatCount="indefinite">
<mpath href="#orbit-cw"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.8;0.8;0" keyTimes="0;0.05;0.92;1" dur="10s" begin="2s" repeatCount="indefinite"/>
</circle>
<circle r="3" fill="#4a9eff" opacity="0" filter="url(#glow-blue)">
<animateMotion dur="7s" begin="1s" repeatCount="indefinite">
<mpath href="#orbit-ccw"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.85;0.85;0" keyTimes="0;0.05;0.92;1" dur="7s" begin="1s" repeatCount="indefinite"/>
</circle>
<circle r="2.5" fill="#818cf8" opacity="0" filter="url(#glow-purple)">
<animateMotion dur="9s" begin="4s" repeatCount="indefinite">
<mpath href="#orbit-cw"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.7;0.7;0" keyTimes="0;0.05;0.92;1" dur="9s" begin="4s" repeatCount="indefinite"/>
</circle>
<circle r="3" fill="#22d3ee" opacity="0" filter="url(#glow-cyan)">
<animateMotion dur="11s" begin="3s" repeatCount="indefinite">
<mpath href="#orbit-ccw"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.75;0.75;0" keyTimes="0;0.05;0.92;1" dur="11s" begin="3s" repeatCount="indefinite"/>
</circle>
<circle r="2" fill="#ef4444" opacity="0" filter="url(#glow-orange)">
<animateMotion dur="12s" begin="5s" repeatCount="indefinite">
<mpath href="#orbit-cw"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.7;0.7;0" keyTimes="0;0.05;0.92;1" dur="12s" begin="5s" repeatCount="indefinite"/>
</circle>
<!-- ═══ ORBITAL FLASH EFFECTS ═══ -->
<!-- Color-matched bursts: each fires when its orbital particle passes nearest the service box -->
<!-- Orchestrator burst — amber #f59e0b, CW 8s begin=0s, particle at top at cycle boundary -->
<g>
<path d="M 640 183 L 645 178 L 635 174 L 640 170" fill="none" stroke="#f59e0b" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow-flash)"/>
<circle cx="640" cy="183" r="0" fill="#f59e0b" filter="url(#glow-flash)">
<animate attributeName="r" values="10;0;0;10" keyTimes="0;0.15;0.85;1" dur="8s" begin="0s" repeatCount="indefinite"/>
</circle>
<animate attributeName="opacity" values="1;0;0;1" keyTimes="0;0.15;0.85;1" dur="8s" begin="0s" repeatCount="indefinite"/>
</g>
<!-- Vault burst — pink #ec4899, CW 10s begin=2s, particle passes Vault at keyTime=0.23 -->
<g opacity="0">
<path d="M 775 304 L 779 300 L 782 308 L 789 304" fill="none" stroke="#ec4899" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow-flash)"/>
<circle cx="775" cy="304" r="0" fill="#ec4899" filter="url(#glow-flash)">
<animate attributeName="r" values="0;0;10;0;0" keyTimes="0;0.15;0.23;0.38;1" dur="10s" begin="2s" repeatCount="indefinite"/>
</circle>
<animate attributeName="opacity" values="0;0;1;0;0" keyTimes="0;0.15;0.23;0.38;1" dur="10s" begin="2s" repeatCount="indefinite"/>
</g>
<!-- Extensions burst — red #ef4444, CW 12s begin=5s, particle passes Extensions at keyTime=0.38 -->
<g opacity="0">
<path d="M 732 420 L 736 424 L 728 427 L 732 430" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow-flash)"/>
<circle cx="732" cy="420" r="0" fill="#ef4444" filter="url(#glow-flash)">
<animate attributeName="r" values="0;0;10;0;0" keyTimes="0;0.30;0.38;0.53;1" dur="12s" begin="5s" repeatCount="indefinite"/>
</circle>
<animate attributeName="opacity" values="0;0;1;0;0" keyTimes="0;0.30;0.38;0.53;1" dur="12s" begin="5s" repeatCount="indefinite"/>
</g>
<!-- AI•MCP burst — cyan #22d3ee, CCW 11s begin=3s, particle passes AI at keyTime=0.38 -->
<g opacity="0">
<path d="M 548 420 L 544 424 L 552 427 L 548 430" fill="none" stroke="#22d3ee" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow-flash)"/>
<circle cx="548" cy="420" r="0" fill="#22d3ee" filter="url(#glow-flash)">
<animate attributeName="r" values="0;0;10;0;0" keyTimes="0;0.30;0.38;0.53;1" dur="11s" begin="3s" repeatCount="indefinite"/>
</circle>
<animate attributeName="opacity" values="0;0;1;0;0" keyTimes="0;0.30;0.38;0.53;1" dur="11s" begin="3s" repeatCount="indefinite"/>
</g>
<!-- Control Center burst — purple #818cf8, CW 9s begin=4s, particle passes CC at keyTime=0.75 -->
<g opacity="0">
<path d="M 505 320 L 500 315 L 498 325 L 491 320" fill="none" stroke="#818cf8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" filter="url(#glow-flash)"/>
<circle cx="505" cy="320" r="0" fill="#818cf8" filter="url(#glow-flash)">
<animate attributeName="r" values="0;0;10;0;0" keyTimes="0;0.67;0.75;0.90;1" dur="9s" begin="4s" repeatCount="indefinite"/>
</circle>
<animate attributeName="opacity" values="0;0;1;0;0" keyTimes="0;0.67;0.75;0.90;1" dur="9s" begin="4s" repeatCount="indefinite"/>
</g>
<!-- ═══ CREDENTIAL FLOW ═══ -->
<circle r="4" fill="#f59e0b" opacity="0" filter="url(#glow-gold)">
<animateMotion dur="2.5s" begin="0s" repeatCount="indefinite">
<mpath href="#path-orch-vault"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.95;0.95;0" keyTimes="0;0.1;0.8;1" dur="2.5s" repeatCount="indefinite"/>
</circle>
<circle r="3.5" fill="#ec4899" opacity="0" filter="url(#glow-pink)">
<animateMotion dur="2.5s" begin="4s" repeatCount="indefinite">
<mpath href="#path-vault-orch"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.9;0.9;0" keyTimes="0;0.1;0.8;1" dur="2.5s" begin="4s" repeatCount="indefinite"/>
</circle>
<circle r="3" fill="#4a9eff" opacity="0" filter="url(#glow-blue)">
<animateMotion dur="1.2s" begin="0s" repeatCount="indefinite">
<mpath href="#path-cli-orch"/>
</animateMotion>
<animate attributeName="opacity" values="0;0.85;0.85;0" keyTimes="0;0.15;0.7;1" dur="1.2s" repeatCount="indefinite"/>
</circle>
<!-- ═══ CONFIGURATION CYLINDER EDGES ═══ -->
<line x1="920" y1="95" x2="920" y2="156" stroke="#10b981" stroke-width="0.8" stroke-dasharray="4 2" opacity="0.4"/>
<line x1="1060" y1="95" x2="1060" y2="156" stroke="#10b981" stroke-width="0.8" stroke-dasharray="4 2" opacity="0.4"/>
<!-- ═══ DATA PERSISTENCE CYLINDER EDGES ═══ -->
<line x1="210" y1="582" x2="210" y2="669" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 2" opacity="0.4"/>
<line x1="1070" y1="582" x2="1070" y2="669" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 2" opacity="0.4"/>
<!-- ═══ CONNECTIONS TO SURREALDB ═══ -->
<g opacity="0.3">
<line x1="640" y1="460" x2="640" y2="570" stroke="#a78bfa" stroke-width="1" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
<line x1="430" y1="537" x2="430" y2="571" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
<line x1="850" y1="537" x2="850" y2="571" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
<path d="M 377 358 C 280 370 230 480 240 572" fill="none" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
<path d="M 903 358 C 1000 370 1050 480 1040 572" fill="none" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
<path d="M 1060 128 C 1195 270 1145 410 1070 577" fill="none" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
<path d="M 235 138 C 100 280 150 420 210 579" fill="none" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
</g>
<!-- ═══ DATA PERSISTENCE ═══ -->
<g>
<ellipse cx="640" cy="669" rx="430" ry="10" fill="#2e2640" stroke="none" opacity="0.35"/>
<path d="M 210 669 Q 640 686 1070 669" stroke="#a78bfa" stroke-width="1" fill="none" stroke-dasharray="4 2" opacity="0.5"/>
<rect x="210" y="582" width="860" height="87" rx="8" fill="url(#surreal-grad)" stroke="none" opacity="0.3" filter="url(#soft-shadow)"/>
<ellipse cx="640" cy="582" rx="430" ry="12" fill="#a78bfa" opacity="0.45" stroke="none"/>
<text x="640" y="617" text-anchor="middle" fill="#a78bfa" font-family="'DM Sans',sans-serif" font-weight="700" font-size="11" letter-spacing="1">DATA PERSISTENCE</text>
<text x="1055" y="607" text-anchor="end" fill="#c4a8fc" font-family="'IBM Plex Mono',monospace" font-size="7" opacity="0.7">Solo: RocksDB • Multi: WebSocket</text>
<g font-family="'IBM Plex Mono',monospace" font-size="7" font-weight="600">
<rect x="258" y="637" width="130" height="16" rx="3" fill="#f59e0b" stroke="#f59e0b" stroke-width="0.8" opacity="0.25"/>
<text x="323" y="648" text-anchor="middle" fill="#f59e0b">orchestrator</text>
<rect x="400" y="637" width="110" height="16" rx="3" fill="#ec4899" stroke="#ec4899" stroke-width="0.8" opacity="0.25"/>
<text x="455" y="648" text-anchor="middle" fill="#ec4899">vault</text>
<rect x="522" y="637" width="140" height="16" rx="3" fill="#818cf8" stroke="#818cf8" stroke-width="0.8" opacity="0.25"/>
<text x="592" y="648" text-anchor="middle" fill="#818cf8">control_center</text>
<rect x="674" y="637" width="90" height="16" rx="3" fill="#10b981" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<text x="719" y="648" text-anchor="middle" fill="#10b981">audit</text>
<rect x="776" y="637" width="130" height="16" rx="3" fill="#4a9eff" stroke="#4a9eff" stroke-width="0.8" opacity="0.25"/>
<text x="841" y="648" text-anchor="middle" fill="#4a9eff">workspace</text>
<rect x="918" y="637" width="100" height="16" rx="3" fill="none" stroke="#10b981" stroke-width="0.6" stroke-dasharray="4 2" opacity="0.5"/>
<text x="968" y="648" text-anchor="middle" fill="#10b981">Nickel config</text>
</g>
</g>
<!-- ═══ SOLID ENFORCEMENT ═══ -->
<g transform="translate(120, 759)">
<text x="0" y="0" fill="#3a3e48" font-family="'IBM Plex Mono',monospace" font-weight="600" font-size="8" letter-spacing="1.5">SOLID ENFORCEMENT LAYERS</text>
<g font-family="'IBM Plex Mono',monospace" font-size="7">
<rect x="0" y="8" width="80" height="12" rx="3" fill="#f59e0b" opacity="0.18" stroke="#f59e0b" stroke-width="0.5" stroke-opacity="0.5"/>
<text x="40" y="17" text-anchor="middle" fill="#f59e0b" opacity="0.8">Compile-time</text>
<rect x="88" y="8" width="68" height="12" rx="3" fill="#818cf8" opacity="0.18" stroke="#818cf8" stroke-width="0.5" stroke-opacity="0.5"/>
<text x="122" y="17" text-anchor="middle" fill="#818cf8" opacity="0.8">Dev-time</text>
<rect x="164" y="8" width="74" height="12" rx="3" fill="#ec4899" opacity="0.18" stroke="#ec4899" stroke-width="0.5" stroke-opacity="0.5"/>
<text x="201" y="17" text-anchor="middle" fill="#ec4899" opacity="0.8">Pre-commit</text>
<rect x="246" y="8" width="50" height="12" rx="3" fill="#ef4444" opacity="0.18" stroke="#ef4444" stroke-width="0.5" stroke-opacity="0.5"/>
<text x="271" y="17" text-anchor="middle" fill="#ef4444" opacity="0.8">CI/CD</text>
<rect x="304" y="8" width="60" height="12" rx="3" fill="#22d3ee" opacity="0.18" stroke="#22d3ee" stroke-width="0.5" stroke-opacity="0.5"/>
<text x="334" y="17" text-anchor="middle" fill="#22d3ee" opacity="0.8">Runtime</text>
<rect x="372" y="8" width="50" height="12" rx="3" fill="#94a3b8" opacity="0.18" stroke="#94a3b8" stroke-width="0.5" stroke-opacity="0.5"/>
<text x="397" y="17" text-anchor="middle" fill="#94a3b8" opacity="0.6">Audit</text>
</g>
<g font-family="'IBM Plex Mono',monospace" font-size="7" fill="#e2e6ee" opacity="0.6">
<text x="460" y="16" font-family="'IBM Plex Mono',monospace" font-size="7"><tspan fill="#f59e0b">Providers APIs or CLI</tspan><tspan fill="#e2e6ee">: Orchestrator only | </tspan><tspan fill="#818cf8">SSH</tspan><tspan fill="#e2e6ee">: Orchestrator + Machines | </tspan><tspan fill="#22d3ee">Auth</tspan><tspan fill="#e2e6ee">: Control Center only | </tspan><tspan fill="#ec4899">Secrets</tspan><tspan fill="#e2e6ee">: Vault Service API only</tspan></text>
</g>
</g>
<!-- ═══ LEGEND ═══ -->
<g transform="translate(120, 802)" font-family="'IBM Plex Mono',monospace" font-size="8">
<text x="0" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">SERVICES</text>
<circle cx="7" cy="12" r="3" fill="#f59e0b"/><text x="15" y="16" fill="#6b6050">Orchestrator</text>
<circle cx="7" cy="24" r="3" fill="#818cf8"/><text x="15" y="28" fill="#9090b8">Control Center</text>
<circle cx="7" cy="36" r="3" fill="#ec4899"/><text x="15" y="40" fill="#5a3850">Vault Service</text>
<circle cx="7" cy="48" r="3" fill="#ef4444"/><text x="15" y="52" fill="#5a3848">Extension Registry</text>
<circle cx="7" cy="60" r="3" fill="#22d3ee"/><text x="15" y="64" fill="#385a58">AI • MCP</text>
<text x="240" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">INFRASTRUCTURE</text>
<circle cx="248" cy="12" r="5" fill="none" stroke="#94a3b8" stroke-width="1.2" stroke-dasharray="2 2"/>
<text x="260" y="16" fill="#5a6278" opacity="0.5">NATS Orbital Ring</text>
<rect x="243" y="22.5" width="6" height="6" fill="none" stroke="#ef4444" stroke-width="0.8" rx="0.5"/>
<line x1="243" y1="25.5" x2="249" y2="25.5" stroke="#ef4444" stroke-width="0.7"/>
<line x1="246" y1="22.5" x2="246" y2="28.5" stroke="#ef4444" stroke-width="0.7" opacity="0.6"/>
<text x="260" y="28" fill="#ef4444" opacity="0.5">OCI registry</text>
<line x1="240" y1="36" x2="254" y2="36" stroke="#818cf8" stroke-width="1.5"/>
<text x="260" y="40" fill="#818cf8" opacity="0.5">Token and Auth</text>
<path d="M 244 43 L 250 43 L 250 48 Q 247 52 244 48 L 244 43" fill="none" stroke="#ec4899" stroke-width="1.2" stroke-linejoin="round"/>
<text x="260" y="52" fill="#ec4899" opacity="0.5">SecretumVault</text>
<line x1="240" y1="60" x2="254" y2="60" stroke="#10b981" stroke-width="1.5"/>
<text x="260" y="64" fill="#10b981" opacity="0.5">Nickel</text>
<ellipse cx="247" cy="69" rx="5" ry="2" fill="none" stroke="#a78bfa" stroke-width="0.8"/>
<rect x="243" y="69" width="8" height="5" fill="none" stroke="#a78bfa" stroke-width="0.8" opacity="0.5"/>
<ellipse cx="247" cy="74" rx="5" ry="2" fill="#a78bfa" opacity="0.3" stroke="#a78bfa" stroke-width="0.8"/>
<text x="260" y="76" fill="#a78bfa" opacity="0.5">SurrealDB</text>
<text x="460" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">CONNECTIONS</text>
<line x1="460" y1="12" x2="474" y2="12" stroke="#4a9eff" stroke-width="2" filter="url(#glow-blue)"/>
<line x1="460" y1="12" x2="474" y2="12" stroke="#4a9eff" stroke-width="1" stroke-dasharray="4 3" opacity="0.7"/>
<text x="486" y="16" fill="#4a9eff" opacity="0.5">Encrypted</text>
<line x1="460" y1="24" x2="474" y2="24" stroke="#ef9a3c" stroke-width="1.5" stroke-dasharray="2 2"/>
<text x="486" y="28" fill="#ef9a3c" opacity="0.3">I/O and Defs</text>
<line x1="460" y1="36" x2="474" y2="36" stroke="#a78bfa" stroke-width="1.5" stroke-dasharray="2 2"/>
<text x="486" y="40" fill="#5a4878">DBs data</text>
<line x1="460" y1="48" x2="474" y2="48" stroke="#10b981" stroke-width="1.5" stroke-dasharray="2 2"/>
<text x="486" y="52" fill="#10b981" opacity="0.5">Secure access</text>
<circle cx="468" cy="60" r="5" fill="none" stroke="#94a3b8" stroke-width="1.2" stroke-dasharray="2 2"/>
<text x="486" y="64" fill="#5a6278">Events Stream</text>
<text x="685" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">MODES</text>
<rect x="685" y="11" width="40" height="10" rx="2" fill="#34d399" opacity="0.1" stroke="#34d399" stroke-width="0.4"/>
<text x="705" y="19" text-anchor="middle" fill="#34d399" font-size="7" font-weight="600">SOLO</text>
<text x="735" y="19" fill="#4a7a5a" font-size="7">RocksDB + local NATS + auto-session</text>
<rect x="685" y="25" width="40" height="10" rx="2" fill="#818cf8" opacity="0.1" stroke="#818cf8" stroke-width="0.4"/>
<text x="705" y="33" text-anchor="middle" fill="#818cf8" font-size="7" font-weight="600">MULTI</text>
<text x="735" y="33" fill="#9090b8" font-size="7">WebSocket DB + NATS cluster + JWT+Cedar</text>
<rect x="685" y="39" width="40" height="10" rx="2" fill="#f59e0b" opacity="0.1" stroke="#f59e0b" stroke-width="0.4"/>
<text x="705" y="47" text-anchor="middle" fill="#f59e0b" font-size="7" font-weight="600">ENT</text>
<text x="735" y="47" fill="#d97706" font-size="7">Enterprise</text>
</g>
<!-- ═══ DEPLOYMENT ═══ -->
<g transform="translate(145, 693)" font-family="'IBM Plex Mono',monospace">
<rect x="160" y="0" width="120" height="45" rx="6" fill="#2a1515" stroke="#2a1010" stroke-width="0.8"/>
<circle cx="174" cy="15" r="3" fill="#ef4444"/><text x="182" y="18" fill="#d0a0a0" font-size="8" font-weight="500">Production</text>
<text x="209" y="35" fill="#5a3838" font-size="7" text-anchor="middle">Hetzner • AWS</text>
<rect x="300" y="0" width="120" height="45" rx="6" fill="#2a2010" stroke="#1a1810" stroke-width="0.8"/>
<circle cx="314" cy="15" r="3" fill="#f59e0b"/><text x="322" y="18" fill="#d0c0a0" font-size="8" font-weight="500">Staging</text>
<text x="344" y="35" fill="#5a5038" font-size="7" text-anchor="middle">K8s cluster</text>
<rect x="440" y="0" width="120" height="45" rx="6" fill="#1a2820" stroke="#0a1810" stroke-width="0.8"/>
<circle cx="454" cy="15" r="3" fill="#34d399"/><text x="462" y="18" fill="#a0d0b8" font-size="8" font-weight="500">Dev</text>
<text x="484" y="35" fill="#385a48" font-size="7" text-anchor="middle">Solo mode</text>
<rect x="580" y="0" width="120" height="45" rx="6" fill="#1a182a" stroke="#0a0a1a" stroke-width="0.8"/>
<circle cx="594" cy="15" r="3" fill="#818cf8"/><text x="602" y="18" fill="#b0b0d8" font-size="8" font-weight="500">Edge</text>
<text x="624" y="35" fill="#48486a" font-size="7" text-anchor="middle">On-prem • IoT</text>
<rect x="720" y="0" width="120" height="45" rx="6" fill="#1a2020" stroke="#0a1010" stroke-width="0.8"/>
<circle cx="734" cy="15" r="3" fill="#22d3ee"/><text x="742" y="18" fill="#a0c8c8" font-size="8" font-weight="500">Custom</text>
<text x="774" y="35" fill="#385858" font-size="7" text-anchor="middle">GitOps • Webhook</text>
</g>
<!-- ═══ VERSION ═══ -->
<text x="1160" y="872" text-anchor="end" fill="#b0dff6" font-family="'IBM Plex Mono',monospace" font-size="9" letter-spacing="0.5">v3.0.11 • ∞ Architecture</text>
</svg>