# Dot grid wave

> A grid of dots where each one lights up as a ripple travels outward from the center.

- Category: [Backgrounds](https://library.aimran.es/components/patterns)
- Built with: HTML + CSS
- Live editor: https://library.aimran.es/blocks/pt-dots
- Library: AIMRAN Library (https://library.aimran.es), free, no sign-up, by Aimran Oukham

## Where to use it

A dot grid wave feels technical but friendly, so it fits the hero of a developer tool, the landing page of an analytics product or a “coming soon” page before a hardware launch. The ripple always starts in the middle and pulls the eye to whatever sits there. It’s an animated dot pattern background built with CSS only.

Put your logo or headline right in the center and let the wave do the framing. If the dots feel too busy on a large monitor, lower the density or the opacity before you start changing colors.

## Code

### HTML

```html
<div class="pt-dots"><i style="--r:12.3"></i><i style="--r:11.5"></i><i style="--r:10.7"></i><i style="--r:9.9"></i><i style="--r:9.2"></i><i style="--r:8.5"></i><i style="--r:7.9"></i><i style="--r:7.4"></i><i style="--r:7.0"></i><i style="--r:6.7"></i><i style="--r:6.5"></i><i style="--r:6.5"></i><i style="--r:6.7"></i><i style="--r:7.0"></i><i style="--r:7.4"></i><i style="--r:7.9"></i><i style="--r:8.5"></i><i style="--r:9.2"></i><i style="--r:9.9"></i><i style="--r:10.7"></i><i style="--r:11.5"></i><i style="--r:12.3"></i><i style="--r:11.9"></i><i style="--r:11.0"></i><i style="--r:10.1"></i><i style="--r:9.3"></i><i style="--r:8.5"></i><i style="--r:7.8"></i><i style="--r:7.1"></i><i style="--r:6.5"></i><i style="--r:6.0"></i><i style="--r:5.7"></i><i style="--r:5.5"></i><i style="--r:5.5"></i><i style="--r:5.7"></i><i style="--r:6.0"></i><i style="--r:6.5"></i><i style="--r:7.1"></i><i style="--r:7.8"></i><i style="--r:8.5"></i><i style="--r:9.3"></i><i style="--r:10.1"></i><i style="--r:11.0"></i><i style="--r:11.9"></i><i style="--r:11.4"></i><i style="--r:10.5"></i><i style="--r:9.6"></i><i style="--r:8.7"></i><i style="--r:7.9"></i><i style="--r:7.1"></i><i style="--r:6.4"></i><i style="--r:5.7"></i><i style="--r:5.1"></i><i style="--r:4.7"></i><i style="--r:4.5"></i><i style="--r:4.5"></i><i style="--r:4.7"></i><i style="--r:5.1"></i><i style="--r:5.7"></i><i style="--r:6.4"></i><i style="--r:7.1"></i><i style="--r:7.9"></i><i style="--r:8.7"></i><i style="--r:9.6"></i><i style="--r:10.5"></i><i style="--r:11.4"></i><i style="--r:11.1"></i><i style="--r:10.1"></i><i style="--r:9.2"></i><i style="--r:8.3"></i><i style="--r:7.4"></i><i style="--r:6.5"></i><i style="--r:5.7"></i><i style="--r:4.9"></i><i style="--r:4.3"></i><i style="--r:3.8"></i><i style="--r:3.5"></i><i style="--r:3.5"></i><i style="--r:3.8"></i><i style="--r:4.3"></i><i style="--r:4.9"></i><i style="--r:5.7"></i><i style="--r:6.5"></i><i style="--r:7.4"></i><i style="--r:8.3"></i><i style="--r:9.2"></i><i style="--r:10.1"></i><i style="--r:11.1"></i><i style="--r:10.8"></i><i style="--r:9.8"></i><i style="--r:8.9"></i><i style="--r:7.9"></i><i style="--r:7.0"></i><i style="--r:6.0"></i><i style="--r:5.1"></i><i style="--r:4.3"></i><i style="--r:3.5"></i><i style="--r:2.9"></i><i style="--r:2.5"></i><i style="--r:2.5"></i><i style="--r:2.9"></i><i style="--r:3.5"></i><i style="--r:4.3"></i><i style="--r:5.1"></i><i style="--r:6.0"></i><i style="--r:7.0"></i><i style="--r:7.9"></i><i style="--r:8.9"></i><i style="--r:9.8"></i><i style="--r:10.8"></i><i style="--r:10.6"></i><i style="--r:9.6"></i><i style="--r:8.6"></i><i style="--r:7.6"></i><i style="--r:6.7"></i><i style="--r:5.7"></i><i style="--r:4.7"></i><i style="--r:3.8"></i><i style="--r:2.9"></i><i style="--r:2.1"></i><i style="--r:1.6"></i><i style="--r:1.6"></i><i style="--r:2.1"></i><i style="--r:2.9"></i><i style="--r:3.8"></i><i style="--r:4.7"></i><i style="--r:5.7"></i><i style="--r:6.7"></i><i style="--r:7.6"></i><i style="--r:8.6"></i><i style="--r:9.6"></i><i style="--r:10.6"></i><i style="--r:10.5"></i><i style="--r:9.5"></i><i style="--r:8.5"></i><i style="--r:7.5"></i><i style="--r:6.5"></i><i style="--r:5.5"></i><i style="--r:4.5"></i><i style="--r:3.5"></i><i style="--r:2.5"></i><i style="--r:1.6"></i><i style="--r:0.7"></i><i style="--r:0.7"></i><i style="--r:1.6"></i><i style="--r:2.5"></i><i style="--r:3.5"></i><i style="--r:4.5"></i><i style="--r:5.5"></i><i style="--r:6.5"></i><i style="--r:7.5"></i><i style="--r:8.5"></i><i style="--r:9.5"></i><i style="--r:10.5"></i><i style="--r:10.5"></i><i style="--r:9.5"></i><i style="--r:8.5"></i><i style="--r:7.5"></i><i style="--r:6.5"></i><i style="--r:5.5"></i><i style="--r:4.5"></i><i style="--r:3.5"></i><i style="--r:2.5"></i><i style="--r:1.6"></i><i style="--r:0.7"></i><i style="--r:0.7"></i><i style="--r:1.6"></i><i style="--r:2.5"></i><i style="--r:3.5"></i><i style="--r:4.5"></i><i style="--r:5.5"></i><i style="--r:6.5"></i><i style="--r:7.5"></i><i style="--r:8.5"></i><i style="--r:9.5"></i><i style="--r:10.5"></i><i style="--r:10.6"></i><i style="--r:9.6"></i><i style="--r:8.6"></i><i style="--r:7.6"></i><i style="--r:6.7"></i><i style="--r:5.7"></i><i style="--r:4.7"></i><i style="--r:3.8"></i><i style="--r:2.9"></i><i style="--r:2.1"></i><i style="--r:1.6"></i><i style="--r:1.6"></i><i style="--r:2.1"></i><i style="--r:2.9"></i><i style="--r:3.8"></i><i style="--r:4.7"></i><i style="--r:5.7"></i><i style="--r:6.7"></i><i style="--r:7.6"></i><i style="--r:8.6"></i><i style="--r:9.6"></i><i style="--r:10.6"></i><i style="--r:10.8"></i><i style="--r:9.8"></i><i style="--r:8.9"></i><i style="--r:7.9"></i><i style="--r:7.0"></i><i style="--r:6.0"></i><i style="--r:5.1"></i><i style="--r:4.3"></i><i style="--r:3.5"></i><i style="--r:2.9"></i><i style="--r:2.5"></i><i style="--r:2.5"></i><i style="--r:2.9"></i><i style="--r:3.5"></i><i style="--r:4.3"></i><i style="--r:5.1"></i><i style="--r:6.0"></i><i style="--r:7.0"></i><i style="--r:7.9"></i><i style="--r:8.9"></i><i style="--r:9.8"></i><i style="--r:10.8"></i><i style="--r:11.1"></i><i style="--r:10.1"></i><i style="--r:9.2"></i><i style="--r:8.3"></i><i style="--r:7.4"></i><i style="--r:6.5"></i><i style="--r:5.7"></i><i style="--r:4.9"></i><i style="--r:4.3"></i><i style="--r:3.8"></i><i style="--r:3.5"></i><i style="--r:3.5"></i><i style="--r:3.8"></i><i style="--r:4.3"></i><i style="--r:4.9"></i><i style="--r:5.7"></i><i style="--r:6.5"></i><i style="--r:7.4"></i><i style="--r:8.3"></i><i style="--r:9.2"></i><i style="--r:10.1"></i><i style="--r:11.1"></i><i style="--r:11.4"></i><i style="--r:10.5"></i><i style="--r:9.6"></i><i style="--r:8.7"></i><i style="--r:7.9"></i><i style="--r:7.1"></i><i style="--r:6.4"></i><i style="--r:5.7"></i><i style="--r:5.1"></i><i style="--r:4.7"></i><i style="--r:4.5"></i><i style="--r:4.5"></i><i style="--r:4.7"></i><i style="--r:5.1"></i><i style="--r:5.7"></i><i style="--r:6.4"></i><i style="--r:7.1"></i><i style="--r:7.9"></i><i style="--r:8.7"></i><i style="--r:9.6"></i><i style="--r:10.5"></i><i style="--r:11.4"></i><i style="--r:11.9"></i><i style="--r:11.0"></i><i style="--r:10.1"></i><i style="--r:9.3"></i><i style="--r:8.5"></i><i style="--r:7.8"></i><i style="--r:7.1"></i><i style="--r:6.5"></i><i style="--r:6.0"></i><i style="--r:5.7"></i><i style="--r:5.5"></i><i style="--r:5.5"></i><i style="--r:5.7"></i><i style="--r:6.0"></i><i style="--r:6.5"></i><i style="--r:7.1"></i><i style="--r:7.8"></i><i style="--r:8.5"></i><i style="--r:9.3"></i><i style="--r:10.1"></i><i style="--r:11.0"></i><i style="--r:11.9"></i><i style="--r:12.3"></i><i style="--r:11.5"></i><i style="--r:10.7"></i><i style="--r:9.9"></i><i style="--r:9.2"></i><i style="--r:8.5"></i><i style="--r:7.9"></i><i style="--r:7.4"></i><i style="--r:7.0"></i><i style="--r:6.7"></i><i style="--r:6.5"></i><i style="--r:6.5"></i><i style="--r:6.7"></i><i style="--r:7.0"></i><i style="--r:7.4"></i><i style="--r:7.9"></i><i style="--r:8.5"></i><i style="--r:9.2"></i><i style="--r:9.9"></i><i style="--r:10.7"></i><i style="--r:11.5"></i><i style="--r:12.3"></i></div>
```

### CSS

```css
.pt-dots {
  --c1: #0071e3;
  --c2: #8b5cf6;
  --c3: #14b8a6;
  --k: 1;
  /* velocidad */
  --d: 1;
  /* densidad / escala */
  --o: 1;
  /* opacidad */
  --bg: #05060a;
  --fg: #ffffff;
  --blend: screen;
  min-height: 100vh;
}

.pt-dots {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background-color: var(--bg);
  container-type: size;
  isolation: isolate;
}

.pt-dots>* {
  opacity: var(--o);
}

.pt-dots {
  display: grid;
  grid-template-columns: repeat(22,1fr);
  grid-template-rows: repeat(14,1fr);
  place-items: center;
  padding: 2%;
}

.pt-dots i {
  width: calc(6px * var(--d));
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--c1);
  animation: pt-dots-w calc(3.2s / var(--k)) ease-in-out infinite backwards;
  animation-delay: calc(var(--r) * .12s / var(--k));
}

@keyframes pt-dots-w {
  0%,100% {
    transform: scale(.6);
    opacity: calc(var(--o) * .25);
  }
  18% {
    transform: scale(1.8);
    opacity: var(--o);
    background: var(--c2);
    box-shadow: 0 0 14px var(--c2);
  }
  40% {
    transform: scale(1);
    opacity: calc(var(--o) * .6);
    background: var(--c3);
  }
}
```

### React

```tsx
// @ts-nocheck
import { useEffect, useRef } from "react";

const css = `
.pt-dots {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background-color: var(--bg);
  container-type: size;
  isolation: isolate;
}

.pt-dots>* {
  opacity: var(--o);
}

.pt-dots {
  display: grid;
  grid-template-columns: repeat(22,1fr);
  grid-template-rows: repeat(14,1fr);
  place-items: center;
  padding: 2%;
}

.pt-dots i {
  width: calc(6px * var(--d));
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--c1);
  animation: pt-dots-w calc(3.2s / var(--k)) ease-in-out infinite backwards;
  animation-delay: calc(var(--r) * .12s / var(--k));
}

@keyframes pt-dots-w {
  0%,100% {
    transform: scale(.6);
    opacity: calc(var(--o) * .25);
  }
  18% {
    transform: scale(1.8);
    opacity: var(--o);
    background: var(--c2);
    box-shadow: 0 0 14px var(--c2);
  }
  40% {
    transform: scale(1);
    opacity: calc(var(--o) * .6);
    background: var(--c3);
  }
}

`;

export default function PatternDots() {
  const ref = useRef(null);
  return (
    <>
      <style>{css}</style>
      <div
        ref={ref}
        className="pt-dots"
        style={{
          "--c1": "#0071e3",
          "--c2": "#8b5cf6",
          "--c3": "#14b8a6",
          "--k": 1,
          "--d": 1,
          "--o": 1,
          "--bg": "#05060a",
          "--fg": "#ffffff",
          "--blend": "screen",
          minHeight: "100vh",
        }}
      >
        <i style={{ "--r": "12.3" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "12.3" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "12.3" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "12.3" } as CSSProperties}></i>
      </div>
    </>
  );
}
```

## Prompt for AI assistants

Paste this into ChatGPT, Claude, Cursor, v0 or Lovable to adapt the block to your stack (Tailwind, Vue, Svelte…):

````text
I want to add the “Dot grid wave” block (Backgrounds) from AIMRAN Library to my project.

## What it is
A grid of dots where each one lights up as a ripple travels outward from the center.

## Chosen settings
- Color 1: #0071e3
- Color 2: #8b5cf6
- Color 3: #14b8a6
- Speed: 1x (from 0.2 to 3x)
- Density / scale: 1x (from 0.5 to 2x)
- Opacity: 1 (from 0.2 to 1)

## What I need
1. Add it to my project with the same look and animation as the reference code: same sizes, colours, radii, shadows, timings and easing.
2. It is built with plain HTML and CSS (the reference wraps it in a React component with its CSS). If my project uses something else (Vue, Svelte, Astro, plain HTML…), translate it without losing any behaviour. If I use Tailwind, turn the styles into classes; if not, keep the CSS in its own file.
3. Expose the settings above as props (or CSS variables) with those values as defaults.
4. Make it work well on phones: nothing that depends only on hover, touch targets of at least 44 px and no overflow on 320 px screens.
5. Make it look right in light and dark mode.
6. Keep it accessible: semantic HTML, roles and aria-* where needed, visible focus and keyboard support.
7. Respect prefers-reduced-motion: with reduced motion, no big animations but the same end result.

## Reference code
```tsx
// @ts-nocheck
import { useEffect, useRef } from "react";

const css = `
.pt-dots {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background-color: var(--bg);
  container-type: size;
  isolation: isolate;
}

.pt-dots>* {
  opacity: var(--o);
}

.pt-dots {
  display: grid;
  grid-template-columns: repeat(22,1fr);
  grid-template-rows: repeat(14,1fr);
  place-items: center;
  padding: 2%;
}

.pt-dots i {
  width: calc(6px * var(--d));
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--c1);
  animation: pt-dots-w calc(3.2s / var(--k)) ease-in-out infinite backwards;
  animation-delay: calc(var(--r) * .12s / var(--k));
}

@keyframes pt-dots-w {
  0%,100% {
    transform: scale(.6);
    opacity: calc(var(--o) * .25);
  }
  18% {
    transform: scale(1.8);
    opacity: var(--o);
    background: var(--c2);
    box-shadow: 0 0 14px var(--c2);
  }
  40% {
    transform: scale(1);
    opacity: calc(var(--o) * .6);
    background: var(--c3);
  }
}

`;

export default function PatternDots() {
  const ref = useRef(null);
  return (
    <>
      <style>{css}</style>
      <div
        ref={ref}
        className="pt-dots"
        style={{
          "--c1": "#0071e3",
          "--c2": "#8b5cf6",
          "--c3": "#14b8a6",
          "--k": 1,
          "--d": 1,
          "--o": 1,
          "--bg": "#05060a",
          "--fg": "#ffffff",
          "--blend": "screen",
          minHeight: "100vh",
        }}
      >
        <i style={{ "--r": "12.3" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "12.3" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "0.7" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.5" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.5" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "1.6" } as CSSProperties}></i><i style={{ "--r": "2.1" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.6" } as CSSProperties}></i><i style={{ "--r": "8.6" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.6" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.5" } as CSSProperties}></i><i style={{ "--r": "2.9" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.9" } as CSSProperties}></i><i style={{ "--r": "9.8" } as CSSProperties}></i><i style={{ "--r": "10.8" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.5" } as CSSProperties}></i><i style={{ "--r": "3.8" } as CSSProperties}></i><i style={{ "--r": "4.3" } as CSSProperties}></i><i style={{ "--r": "4.9" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "8.3" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.1" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.5" } as CSSProperties}></i><i style={{ "--r": "4.7" } as CSSProperties}></i><i style={{ "--r": "5.1" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.4" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.7" } as CSSProperties}></i><i style={{ "--r": "9.6" } as CSSProperties}></i><i style={{ "--r": "10.5" } as CSSProperties}></i><i style={{ "--r": "11.4" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.5" } as CSSProperties}></i><i style={{ "--r": "5.7" } as CSSProperties}></i><i style={{ "--r": "6.0" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "7.1" } as CSSProperties}></i><i style={{ "--r": "7.8" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.3" } as CSSProperties}></i><i style={{ "--r": "10.1" } as CSSProperties}></i><i style={{ "--r": "11.0" } as CSSProperties}></i><i style={{ "--r": "11.9" } as CSSProperties}></i><i style={{ "--r": "12.3" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.5" } as CSSProperties}></i><i style={{ "--r": "6.7" } as CSSProperties}></i><i style={{ "--r": "7.0" } as CSSProperties}></i><i style={{ "--r": "7.4" } as CSSProperties}></i><i style={{ "--r": "7.9" } as CSSProperties}></i><i style={{ "--r": "8.5" } as CSSProperties}></i><i style={{ "--r": "9.2" } as CSSProperties}></i><i style={{ "--r": "9.9" } as CSSProperties}></i><i style={{ "--r": "10.7" } as CSSProperties}></i><i style={{ "--r": "11.5" } as CSSProperties}></i><i style={{ "--r": "12.3" } as CSSProperties}></i>
      </div>
    </>
  );
}
```

Give me the complete final code, ready to paste, and tell me in one line where to put it in my project.
````
