numerics-solvers.svg•3.56 kB
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="240" aria-labelledby="title desc"><title id="title">Numerics & Solvers</title><desc id="desc">Converging dots with "marching ants" bracket motif.</desc><defs><linearGradient id="g" x1="0" x2="1" y1="0" y2="0"><stop offset="0%" stop-color="#0ea5e9"/><stop offset="100%" stop-color="#22d3ee"/></linearGradient><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="2" cy="2" r="1" fill="#0ea5e922"/></pattern></defs><style>@keyframes drift { from { transform: translateX(0) } to { transform: translateX(-200px) } }
@keyframes pulse { 0%,100% { opacity:.8 } 50% { opacity:1 } }
@keyframes sweep { 0% { transform: translateX(-1200px) } 100% { transform: translateX(1200px) } }
@keyframes rotate { from { transform: rotate(0deg) } to { transform: rotate(360deg) } }
@keyframes orbit { from { transform: rotate(0deg) } to { transform: rotate(360deg) } }
@keyframes shimmer { 0%,100% { opacity: 0.3 } 50% { opacity: 0.8 } }
@keyframes draw { from { stroke-dasharray: 0,800 } to { stroke-dasharray: 800,0 } }
@keyframes march { from { stroke-dashoffset: 0 } to { stroke-dashoffset: 12 } }
/* reduce motion */
@media (prefers-reduced-motion: reduce) {
* { animation: none !important }
}
.bg { fill: url(#dots) }
.accent { fill: url(#g) }
.stroke { stroke: url(#g); stroke-width: 2; fill: none; opacity: .7 }
.drift { animation: drift 60s linear infinite }
.pulse { animation: pulse 4s ease-in-out infinite }
.sweep { animation: sweep 8s linear infinite }
.rotate { animation: rotate 20s linear infinite }
.orbit { animation: orbit 6s linear infinite }
.shimmer { animation: shimmer 3s ease-in-out infinite }
.draw { animation: draw 3s ease-in-out forwards }
.march { animation: march 1s linear infinite }
text.title { font-size: 42px; font-weight: 700; fill: #0b1220; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif; }
text.sub { font-size: 18px; fill: #0b122099; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif; }</style><rect width="1200" height="240" class="bg"/><circle cx="200" cy="12018.0" r="6" class="accent"/><circle cx="240" cy="1209.7" r="5.7" class="accent" opacity="0.95"/><circle cx="280" cy="120-7.5" r="5.4" class="accent" opacity="0.9"/><circle cx="320" cy="120-17.8" r="5.1" class="accent" opacity="0.85"/><circle cx="360" cy="120-11.8" r="4.8" class="accent" opacity="0.8"/><circle cx="400" cy="1205.1" r="4.5" class="accent" opacity="0.75"/><circle cx="440" cy="12017.3" r="4.2" class="accent" opacity="0.7"/><circle cx="480" cy="12013.6" r="3.9" class="accent" opacity="0.6499999999999999"/><circle cx="520" cy="120-2.6" r="3.6" class="accent" opacity="0.6"/><circle cx="560" cy="120-16.4" r="3.3000000000000003" class="accent" opacity="0.55"/><circle cx="600" cy="120-15.1" r="3" class="accent" opacity="0.5"/><circle cx="640" cy="1200.1" r="2.7" class="accent" opacity="0.44999999999999996"/><rect width="380" height="72" x="180" y="84" fill="none" stroke="#0ea5e9" stroke-dasharray="6 6" stroke-width="2" class="march"/><g transform="translate(40,150)"><text class="title">Numerics & Solvers</text><text y="28" class="sub">Stability • Convergence • Performance</text></g></svg>