| 1 | <svg xmlns="http://www.w3.org/2000/svg" width="760" height="170" viewBox="0 0 760 170" role="img" aria-label="Reasonix — DeepSeek-native agent framework"> |
| 2 | <title>Reasonix</title> |
| 3 | <defs> |
| 4 | <!-- Signature cyan → violet → fuchsia gradient used across the TUI wordmark |
| 5 | and the brand mark. Renders well on both GitHub dark and light bg. --> |
| 6 | <linearGradient id="rx-grad" x1="0%" y1="0%" x2="100%" y2="0%"> |
| 7 | <stop offset="0%" stop-color="#5eead4"/> |
| 8 | <stop offset="15%" stop-color="#67e8f9"/> |
| 9 | <stop offset="30%" stop-color="#7dd3fc"/> |
| 10 | <stop offset="45%" stop-color="#93c5fd"/> |
| 11 | <stop offset="60%" stop-color="#a5b4fc"/> |
| 12 | <stop offset="75%" stop-color="#c4b5fd"/> |
| 13 | <stop offset="90%" stop-color="#d8b4fe"/> |
| 14 | <stop offset="100%" stop-color="#f0abfc"/> |
| 15 | </linearGradient> |
| 16 | <linearGradient id="rx-grad-mark" x1="0%" y1="0%" x2="100%" y2="100%"> |
| 17 | <stop offset="0%" stop-color="#5eead4"/> |
| 18 | <stop offset="50%" stop-color="#93c5fd"/> |
| 19 | <stop offset="100%" stop-color="#c4b5fd"/> |
| 20 | </linearGradient> |
| 21 | <filter id="glow" x="-50%" y="-50%" width="200%" height="200%"> |
| 22 | <feGaussianBlur stdDeviation="3" result="blur"/> |
| 23 | <feMerge> |
| 24 | <feMergeNode in="blur"/> |
| 25 | <feMergeNode in="SourceGraphic"/> |
| 26 | </feMerge> |
| 27 | </filter> |
| 28 | </defs> |
| 29 | |
| 30 | <!-- ◈ brand mark: concentric diamonds. Outer stroke pulses, |
| 31 | inner fill breathes, whole group rotates slowly. The rotation |
| 32 | is subtle (12s / full turn) so it feels like a heartbeat, not a |
| 33 | spinner. --> |
| 34 | <g transform="translate(90, 85)" filter="url(#glow)"> |
| 35 | <g> |
| 36 | <animateTransform attributeName="transform" type="rotate" |
| 37 | from="0" to="360" dur="18s" repeatCount="indefinite"/> |
| 38 | <!-- Outer hollow diamond --> |
| 39 | <path d="M 0,-46 L 46,0 L 0,46 L -46,0 Z" |
| 40 | fill="none" |
| 41 | stroke="url(#rx-grad-mark)" |
| 42 | stroke-width="3.5" |
| 43 | stroke-linejoin="round"> |
| 44 | <animate attributeName="stroke-width" |
| 45 | values="3.5;5.5;3.5" |
| 46 | dur="2.4s" |
| 47 | repeatCount="indefinite"/> |
| 48 | </path> |
| 49 | <!-- Middle hollow diamond --> |
| 50 | <path d="M 0,-26 L 26,0 L 0,26 L -26,0 Z" |
| 51 | fill="none" |
| 52 | stroke="url(#rx-grad-mark)" |
| 53 | stroke-width="2" |
| 54 | stroke-linejoin="round" |
| 55 | opacity="0.7"> |
| 56 | <animate attributeName="opacity" |
| 57 | values="0.4;0.9;0.4" |
| 58 | dur="2.4s" |
| 59 | begin="0.8s" |
| 60 | repeatCount="indefinite"/> |
| 61 | </path> |
| 62 | <!-- Inner solid diamond --> |
| 63 | <path d="M 0,-11 L 11,0 L 0,11 L -11,0 Z" |
| 64 | fill="url(#rx-grad-mark)"> |
| 65 | <animate attributeName="opacity" |
| 66 | values="0.75;1;0.75" |
| 67 | dur="2.4s" |
| 68 | repeatCount="indefinite"/> |
| 69 | </path> |
| 70 | </g> |
| 71 | </g> |
| 72 | |
| 73 | <!-- REASONIX wordmark with shifting gradient. The x1 offset animates |
| 74 | so the gradient crawls left-to-right across the letters — a |
| 75 | slow rainbow sweep that gives the logo life without being noisy. --> |
| 76 | <text x="170" y="102" |
| 77 | font-family="ui-monospace, SFMono-Regular, 'Cascadia Code', Menlo, Consolas, 'DejaVu Sans Mono', monospace" |
| 78 | font-size="68" |
| 79 | font-weight="800" |
| 80 | fill="url(#rx-grad)" |
| 81 | letter-spacing="6">REASONIX |
| 82 | <animate attributeName="opacity" |
| 83 | values="0.9;1;0.9" |
| 84 | dur="3.2s" |
| 85 | repeatCount="indefinite"/> |
| 86 | </text> |
| 87 | |
| 88 | <!-- Tagline sits just below the wordmark. Slate-500 reads well on |
| 89 | both GitHub dark and light themes (~4.5:1 contrast either way). --> |
| 90 | <text x="172" y="136" |
| 91 | font-family="ui-monospace, SFMono-Regular, 'Cascadia Code', Menlo, Consolas, 'DejaVu Sans Mono', monospace" |
| 92 | font-size="15" |
| 93 | fill="#64748b" |
| 94 | letter-spacing="0.5">DeepSeek-native agent framework · cache-first loop · Ink TUI</text> |
| 95 | </svg> |
| 96 |