# Progressive image loader

> A landscape shows up first in chunky pixels, then finer ones and finally sharp, like a photo on a slow connection.

- Category: [Loaders](https://library.aimran.es/components/loaders)
- Built with: HTML + CSS
- Live editor: https://library.aimran.es/blocks/uv-ld-progressive-image
- Library: AIMRAN Library (https://library.aimran.es), free, no sign-up, by Aimran Oukham

## Where to use it

A sunset landscape sampled at build time at six by four and twelve by eight pixels, with every pixel colored as a real average of the two block colors, then replaced by a sharp vector version that comes into focus. A thin bar under the image tracks each stage. It suits galleries, travel sites and image heavy feeds.

The main color warms the sun and the horizon and the second sets the sky and the mountains, so the whole scene follows your palette. Use it as a placeholder where a photo or a map is about to load.

## Code

### HTML

```html
<div class="uvq10-pix" role="status"><span class="sr">Loading image</span><div class="im" aria-hidden="true"><svg class="px l0" viewBox="0 0 6 4" preserveAspectRatio="none" aria-hidden="true"><rect x="0" y="0" width="1.02" height="1.02" class="p0"/><rect x="1" y="0" width="1.02" height="1.02" class="p0"/><rect x="2" y="0" width="1.02" height="1.02" class="p0"/><rect x="3" y="0" width="1.02" height="1.02" class="p0"/><rect x="4" y="0" width="1.02" height="1.02" class="p1"/><rect x="5" y="0" width="1.02" height="1.02" class="p0"/><rect x="0" y="1" width="1.02" height="1.02" class="p2"/><rect x="1" y="1" width="1.02" height="1.02" class="p3"/><rect x="2" y="1" width="1.02" height="1.02" class="p4"/><rect x="3" y="1" width="1.02" height="1.02" class="p4"/><rect x="4" y="1" width="1.02" height="1.02" class="p5"/><rect x="5" y="1" width="1.02" height="1.02" class="p2"/><rect x="0" y="2" width="1.02" height="1.02" class="p6"/><rect x="1" y="2" width="1.02" height="1.02" class="p6"/><rect x="2" y="2" width="1.02" height="1.02" class="p6"/><rect x="3" y="2" width="1.02" height="1.02" class="p6"/><rect x="4" y="2" width="1.02" height="1.02" class="p6"/><rect x="5" y="2" width="1.02" height="1.02" class="p6"/><rect x="0" y="3" width="1.02" height="1.02" class="p7"/><rect x="1" y="3" width="1.02" height="1.02" class="p7"/><rect x="2" y="3" width="1.02" height="1.02" class="p7"/><rect x="3" y="3" width="1.02" height="1.02" class="p7"/><rect x="4" y="3" width="1.02" height="1.02" class="p7"/><rect x="5" y="3" width="1.02" height="1.02" class="p7"/></svg><svg class="px l1" viewBox="0 0 12 8" preserveAspectRatio="none" aria-hidden="true"><rect x="0" y="0" width="1.02" height="1.02" class="p0"/><rect x="1" y="0" width="1.02" height="1.02" class="p0"/><rect x="2" y="0" width="1.02" height="1.02" class="p0"/><rect x="3" y="0" width="1.02" height="1.02" class="p0"/><rect x="4" y="0" width="1.02" height="1.02" class="p0"/><rect x="5" y="0" width="1.02" height="1.02" class="p0"/><rect x="6" y="0" width="1.02" height="1.02" class="p0"/><rect x="7" y="0" width="1.02" height="1.02" class="p0"/><rect x="8" y="0" width="1.02" height="1.02" class="p0"/><rect x="9" y="0" width="1.02" height="1.02" class="p0"/><rect x="10" y="0" width="1.02" height="1.02" class="p0"/><rect x="11" y="0" width="1.02" height="1.02" class="p0"/><rect x="0" y="1" width="1.02" height="1.02" class="p8"/><rect x="1" y="1" width="1.02" height="1.02" class="p8"/><rect x="2" y="1" width="1.02" height="1.02" class="p8"/><rect x="3" y="1" width="1.02" height="1.02" class="p8"/><rect x="4" y="1" width="1.02" height="1.02" class="p8"/><rect x="5" y="1" width="1.02" height="1.02" class="p8"/><rect x="6" y="1" width="1.02" height="1.02" class="p8"/><rect x="7" y="1" width="1.02" height="1.02" class="p3"/><rect x="8" y="1" width="1.02" height="1.02" class="p5"/><rect x="9" y="1" width="1.02" height="1.02" class="p3"/><rect x="10" y="1" width="1.02" height="1.02" class="p8"/><rect x="11" y="1" width="1.02" height="1.02" class="p8"/><rect x="0" y="2" width="1.02" height="1.02" class="p3"/><rect x="1" y="2" width="1.02" height="1.02" class="p3"/><rect x="2" y="2" width="1.02" height="1.02" class="p3"/><rect x="3" y="2" width="1.02" height="1.02" class="p3"/><rect x="4" y="2" width="1.02" height="1.02" class="p3"/><rect x="5" y="2" width="1.02" height="1.02" class="p3"/><rect x="6" y="2" width="1.02" height="1.02" class="p3"/><rect x="7" y="2" width="1.02" height="1.02" class="p5"/><rect x="8" y="2" width="1.02" height="1.02" class="p9"/><rect x="9" y="2" width="1.02" height="1.02" class="p5"/><rect x="10" y="2" width="1.02" height="1.02" class="p3"/><rect x="11" y="2" width="1.02" height="1.02" class="p3"/><rect x="0" y="3" width="1.02" height="1.02" class="p10"/><rect x="1" y="3" width="1.02" height="1.02" class="p11"/><rect x="2" y="3" width="1.02" height="1.02" class="p4"/><rect x="3" y="3" width="1.02" height="1.02" class="p10"/><rect x="4" y="3" width="1.02" height="1.02" class="p4"/><rect x="5" y="3" width="1.02" height="1.02" class="p12"/><rect x="6" y="3" width="1.02" height="1.02" class="p12"/><rect x="7" y="3" width="1.02" height="1.02" class="p4"/><rect x="8" y="3" width="1.02" height="1.02" class="p5"/><rect x="9" y="3" width="1.02" height="1.02" class="p4"/><rect x="10" y="3" width="1.02" height="1.02" class="p13"/><rect x="11" y="3" width="1.02" height="1.02" class="p2"/><rect x="0" y="4" width="1.02" height="1.02" class="p14"/><rect x="1" y="4" width="1.02" height="1.02" class="p6"/><rect x="2" y="4" width="1.02" height="1.02" class="p6"/><rect x="3" y="4" width="1.02" height="1.02" class="p12"/><rect x="4" y="4" width="1.02" height="1.02" class="p6"/><rect x="5" y="4" width="1.02" height="1.02" class="p6"/><rect x="6" y="4" width="1.02" height="1.02" class="p6"/><rect x="7" y="4" width="1.02" height="1.02" class="p6"/><rect x="8" y="4" width="1.02" height="1.02" class="p6"/><rect x="9" y="4" width="1.02" height="1.02" class="p6"/><rect x="10" y="4" width="1.02" height="1.02" class="p6"/><rect x="11" y="4" width="1.02" height="1.02" class="p6"/><rect x="0" y="5" width="1.02" height="1.02" class="p6"/><rect x="1" y="5" width="1.02" height="1.02" class="p6"/><rect x="2" y="5" width="1.02" height="1.02" class="p15"/><rect x="3" y="5" width="1.02" height="1.02" class="p16"/><rect x="4" y="5" width="1.02" height="1.02" class="p6"/><rect x="5" y="5" width="1.02" height="1.02" class="p6"/><rect x="6" y="5" width="1.02" height="1.02" class="p6"/><rect x="7" y="5" width="1.02" height="1.02" class="p6"/><rect x="8" y="5" width="1.02" height="1.02" class="p16"/><rect x="9" y="5" width="1.02" height="1.02" class="p16"/><rect x="10" y="5" width="1.02" height="1.02" class="p6"/><rect x="11" y="5" width="1.02" height="1.02" class="p6"/><rect x="0" y="6" width="1.02" height="1.02" class="p7"/><rect x="1" y="6" width="1.02" height="1.02" class="p7"/><rect x="2" y="6" width="1.02" height="1.02" class="p7"/><rect x="3" y="6" width="1.02" height="1.02" class="p7"/><rect x="4" y="6" width="1.02" height="1.02" class="p7"/><rect x="5" y="6" width="1.02" height="1.02" class="p15"/><rect x="6" y="6" width="1.02" height="1.02" class="p7"/><rect x="7" y="6" width="1.02" height="1.02" class="p7"/><rect x="8" y="6" width="1.02" height="1.02" class="p7"/><rect x="9" y="6" width="1.02" height="1.02" class="p7"/><rect x="10" y="6" width="1.02" height="1.02" class="p7"/><rect x="11" y="6" width="1.02" height="1.02" class="p7"/><rect x="0" y="7" width="1.02" height="1.02" class="p7"/><rect x="1" y="7" width="1.02" height="1.02" class="p7"/><rect x="2" y="7" width="1.02" height="1.02" class="p7"/><rect x="3" y="7" width="1.02" height="1.02" class="p7"/><rect x="4" y="7" width="1.02" height="1.02" class="p7"/><rect x="5" y="7" width="1.02" height="1.02" class="p7"/><rect x="6" y="7" width="1.02" height="1.02" class="p7"/><rect x="7" y="7" width="1.02" height="1.02" class="p7"/><rect x="8" y="7" width="1.02" height="1.02" class="p7"/><rect x="9" y="7" width="1.02" height="1.02" class="p7"/><rect x="10" y="7" width="1.02" height="1.02" class="p7"/><rect x="11" y="7" width="1.02" height="1.02" class="p7"/></svg><svg class="vc" viewBox="0 0 300 200" preserveAspectRatio="none" aria-hidden="true"><defs><linearGradient id="uvq10-pix-sky" x1="0" y1="0" x2="0" y2="1"><stop offset="0" class="s0"/><stop offset=".6" class="s1"/></linearGradient></defs><rect width="300" height="200" fill="url(#uvq10-pix-sky)"/><circle cx="210" cy="60" r="30" class="sun"/><polygon points="0,200 0,120 48,84 90,110 150,72 204,104 252,88 300,100 300,200" class="far"/><polygon points="0,200 0,156 66,130 138,160 222,134 300,148 300,200" class="near"/></svg><i class="pg"></i></div></div>
```

### CSS

```css
.uvq10-pix {
  --c1: #ff7b39;
  --c2: #2a6f97;
  --s: 16px;
  /* tamaño */
  --k: 1;
  /* velocidad */
  --fg: #1d1d1f;
  /* texto */
  --bg: #f5f5f7;
  /* fondo */
}

.uvq10-pix {
  font-family: -apple-system,BlinkMacSystemFont,"SF Pro Text","Inter",system-ui,sans-serif;
  font-size: var(--s);
  color: var(--fg);
  -webkit-tap-highlight-color: transparent;
  position: relative;
}

.uvq10-pix .sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.uvq10-pix .im {
  position: relative;
  width: 10.5em;
  height: 7em;
  border-radius: .6em;
  overflow: hidden;
  background: color-mix(in srgb,var(--fg) 10%,var(--bg));
  box-shadow: 0 0 0 1px color-mix(in srgb,var(--fg) 10%,transparent),0 1em 1.6em -1em rgba(0,0,0,.5);
}

.uvq10-pix svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.uvq10-pix .px {
  shape-rendering: crispEdges;
}

.uvq10-pix .l0 {
  animation: uvq10-pix-0 calc(4.4s / var(--k)) steps(1) infinite;
}

.uvq10-pix .l1 {
  animation: uvq10-pix-1 calc(4.4s / var(--k)) steps(1) infinite;
}

.uvq10-pix .vc {
  animation: uvq10-pix-2 calc(4.4s / var(--k)) infinite;
}

.uvq10-pix .pg {
  position: absolute;
  left: 0;
  bottom: 0;
  height: .22em;
  width: 100%;
  transform-origin: 0 50%;
  background: #fff;
  mix-blend-mode: difference;
  animation: uvq10-pix-p calc(4.4s / var(--k)) cubic-bezier(.25,.1,.25,1) infinite;
}

.uvq10-pix .p0 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 20%,var(--c2)) 50%,#fff);
}

.uvq10-pix .p1 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 40%,var(--c2)) 50%,#fff);
}

.uvq10-pix .p2 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 57%,var(--c2)) 70%,#fff);
}

.uvq10-pix .p3 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p4 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,color-mix(in oklab,#fff 75%,#000));
}

.uvq10-pix .p5 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 83%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p6 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 17%,var(--c2)) 60%,#000);
}

.uvq10-pix .p7 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 60%,var(--c2)) 50%,#000);
}

.uvq10-pix .p8 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 33%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p9 {
  fill: color-mix(in oklab,var(--c1) 60%,#fff);
}

.uvq10-pix .p10 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 67%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p11 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 43%,var(--c2)) 70%,color-mix(in oklab,#fff 67%,#000));
}

.uvq10-pix .p12 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 17%,var(--c2)) 60%,color-mix(in oklab,#fff 25%,#000));
}

.uvq10-pix .p13 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,color-mix(in oklab,#fff 50%,#000));
}

.uvq10-pix .p14 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 29%,var(--c2)) 70%,color-mix(in oklab,#fff 33%,#000));
}

.uvq10-pix .p15 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 40%,var(--c2)) 50%,#000);
}

.uvq10-pix .p16 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 33%,var(--c2)) 60%,#000);
}

.uvq10-pix .s0 {
  stop-color: color-mix(in oklab,var(--c2) 50%,#fff);
}

.uvq10-pix .s1 {
  stop-color: color-mix(in oklab,color-mix(in oklab,var(--c1) 79%,var(--c2)) 70%,#fff);
}

.uvq10-pix .sun {
  fill: color-mix(in oklab,var(--c1) 60%,#fff);
}

.uvq10-pix .far {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 8%,var(--c2)) 60%,#000);
}

.uvq10-pix .near {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 60%,var(--c2)) 50%,#000);
}

@keyframes uvq10-pix-0 {
  0% {
    opacity: 0;
  }
  8%,100% {
    opacity: 1;
  }
}

@keyframes uvq10-pix-1 {
  0% {
    opacity: 0;
  }
  30%,100% {
    opacity: 1;
  }
}

@keyframes uvq10-pix-2 {
  0%,54% {
    opacity: 0;
    filter: blur(6px);
  }
  56% {
    opacity: 1;
    filter: blur(5px);
  }
  76%,100% {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes uvq10-pix-p {
  0% {
    transform: scaleX(0);
    opacity: 1;
  }
  8% {
    transform: scaleX(.2);
  }
  30% {
    transform: scaleX(.5);
  }
  56% {
    transform: scaleX(.8);
  }
  76% {
    transform: scaleX(1);
    opacity: 1;
  }
  86%,100% {
    transform: scaleX(1);
    opacity: 0;
  }
}

@media (prefers-reduced-motion:reduce) {
  .uvq10-pix,.uvq10-pix *,.uvq10-pix *::before,.uvq10-pix *::after {
    animation-duration: .01ms!important;
    animation-iteration-count: 1!important;
    transition-duration: .01ms!important;
  }
}
```

### React

```tsx
import type { CSSProperties } from "react";

const css = `
.uvq10-pix {
  font-family: -apple-system,BlinkMacSystemFont,"SF Pro Text","Inter",system-ui,sans-serif;
  font-size: var(--s);
  color: var(--fg);
  -webkit-tap-highlight-color: transparent;
  position: relative;
}

.uvq10-pix .sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.uvq10-pix .im {
  position: relative;
  width: 10.5em;
  height: 7em;
  border-radius: .6em;
  overflow: hidden;
  background: color-mix(in srgb,var(--fg) 10%,var(--bg));
  box-shadow: 0 0 0 1px color-mix(in srgb,var(--fg) 10%,transparent),0 1em 1.6em -1em rgba(0,0,0,.5);
}

.uvq10-pix svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.uvq10-pix .px {
  shape-rendering: crispEdges;
}

.uvq10-pix .l0 {
  animation: uvq10-pix-0 calc(4.4s / var(--k)) steps(1) infinite;
}

.uvq10-pix .l1 {
  animation: uvq10-pix-1 calc(4.4s / var(--k)) steps(1) infinite;
}

.uvq10-pix .vc {
  animation: uvq10-pix-2 calc(4.4s / var(--k)) infinite;
}

.uvq10-pix .pg {
  position: absolute;
  left: 0;
  bottom: 0;
  height: .22em;
  width: 100%;
  transform-origin: 0 50%;
  background: #fff;
  mix-blend-mode: difference;
  animation: uvq10-pix-p calc(4.4s / var(--k)) cubic-bezier(.25,.1,.25,1) infinite;
}

.uvq10-pix .p0 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 20%,var(--c2)) 50%,#fff);
}

.uvq10-pix .p1 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 40%,var(--c2)) 50%,#fff);
}

.uvq10-pix .p2 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 57%,var(--c2)) 70%,#fff);
}

.uvq10-pix .p3 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p4 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,color-mix(in oklab,#fff 75%,#000));
}

.uvq10-pix .p5 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 83%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p6 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 17%,var(--c2)) 60%,#000);
}

.uvq10-pix .p7 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 60%,var(--c2)) 50%,#000);
}

.uvq10-pix .p8 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 33%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p9 {
  fill: color-mix(in oklab,var(--c1) 60%,#fff);
}

.uvq10-pix .p10 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 67%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p11 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 43%,var(--c2)) 70%,color-mix(in oklab,#fff 67%,#000));
}

.uvq10-pix .p12 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 17%,var(--c2)) 60%,color-mix(in oklab,#fff 25%,#000));
}

.uvq10-pix .p13 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,color-mix(in oklab,#fff 50%,#000));
}

.uvq10-pix .p14 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 29%,var(--c2)) 70%,color-mix(in oklab,#fff 33%,#000));
}

.uvq10-pix .p15 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 40%,var(--c2)) 50%,#000);
}

.uvq10-pix .p16 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 33%,var(--c2)) 60%,#000);
}

.uvq10-pix .s0 {
  stop-color: color-mix(in oklab,var(--c2) 50%,#fff);
}

.uvq10-pix .s1 {
  stop-color: color-mix(in oklab,color-mix(in oklab,var(--c1) 79%,var(--c2)) 70%,#fff);
}

.uvq10-pix .sun {
  fill: color-mix(in oklab,var(--c1) 60%,#fff);
}

.uvq10-pix .far {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 8%,var(--c2)) 60%,#000);
}

.uvq10-pix .near {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 60%,var(--c2)) 50%,#000);
}

@keyframes uvq10-pix-0 {
  0% {
    opacity: 0;
  }
  8%,100% {
    opacity: 1;
  }
}

@keyframes uvq10-pix-1 {
  0% {
    opacity: 0;
  }
  30%,100% {
    opacity: 1;
  }
}

@keyframes uvq10-pix-2 {
  0%,54% {
    opacity: 0;
    filter: blur(6px);
  }
  56% {
    opacity: 1;
    filter: blur(5px);
  }
  76%,100% {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes uvq10-pix-p {
  0% {
    transform: scaleX(0);
    opacity: 1;
  }
  8% {
    transform: scaleX(.2);
  }
  30% {
    transform: scaleX(.5);
  }
  56% {
    transform: scaleX(.8);
  }
  76% {
    transform: scaleX(1);
    opacity: 1;
  }
  86%,100% {
    transform: scaleX(1);
    opacity: 0;
  }
}

@media (prefers-reduced-motion:reduce) {
  .uvq10-pix,.uvq10-pix *,.uvq10-pix *::before,.uvq10-pix *::after {
    animation-duration: .01ms!important;
    animation-iteration-count: 1!important;
    transition-duration: .01ms!important;
  }
}
`;

export default function LdProgressiveImage() {
  return (
    <>
      <style>{css}</style>
      <div
        style={{
          "--c1": "#ff7b39",
          "--c2": "#2a6f97",
          "--s": "16px",
          "--k": "1",
          "--fg": "#1d1d1f",
          "--bg": "#f5f5f7",
        } as CSSProperties}
      >
        <div className="uvq10-pix" role="status"><span className="sr">Loading image</span><div className="im" aria-hidden="true"><svg className="px l0" viewBox="0 0 6 4" preserveAspectRatio="none" aria-hidden="true"><rect x="0" y="0" width="1.02" height="1.02" className="p0" /><rect x="1" y="0" width="1.02" height="1.02" className="p0" /><rect x="2" y="0" width="1.02" height="1.02" className="p0" /><rect x="3" y="0" width="1.02" height="1.02" className="p0" /><rect x="4" y="0" width="1.02" height="1.02" className="p1" /><rect x="5" y="0" width="1.02" height="1.02" className="p0" /><rect x="0" y="1" width="1.02" height="1.02" className="p2" /><rect x="1" y="1" width="1.02" height="1.02" className="p3" /><rect x="2" y="1" width="1.02" height="1.02" className="p4" /><rect x="3" y="1" width="1.02" height="1.02" className="p4" /><rect x="4" y="1" width="1.02" height="1.02" className="p5" /><rect x="5" y="1" width="1.02" height="1.02" className="p2" /><rect x="0" y="2" width="1.02" height="1.02" className="p6" /><rect x="1" y="2" width="1.02" height="1.02" className="p6" /><rect x="2" y="2" width="1.02" height="1.02" className="p6" /><rect x="3" y="2" width="1.02" height="1.02" className="p6" /><rect x="4" y="2" width="1.02" height="1.02" className="p6" /><rect x="5" y="2" width="1.02" height="1.02" className="p6" /><rect x="0" y="3" width="1.02" height="1.02" className="p7" /><rect x="1" y="3" width="1.02" height="1.02" className="p7" /><rect x="2" y="3" width="1.02" height="1.02" className="p7" /><rect x="3" y="3" width="1.02" height="1.02" className="p7" /><rect x="4" y="3" width="1.02" height="1.02" className="p7" /><rect x="5" y="3" width="1.02" height="1.02" className="p7" /></svg><svg className="px l1" viewBox="0 0 12 8" preserveAspectRatio="none" aria-hidden="true"><rect x="0" y="0" width="1.02" height="1.02" className="p0" /><rect x="1" y="0" width="1.02" height="1.02" className="p0" /><rect x="2" y="0" width="1.02" height="1.02" className="p0" /><rect x="3" y="0" width="1.02" height="1.02" className="p0" /><rect x="4" y="0" width="1.02" height="1.02" className="p0" /><rect x="5" y="0" width="1.02" height="1.02" className="p0" /><rect x="6" y="0" width="1.02" height="1.02" className="p0" /><rect x="7" y="0" width="1.02" height="1.02" className="p0" /><rect x="8" y="0" width="1.02" height="1.02" className="p0" /><rect x="9" y="0" width="1.02" height="1.02" className="p0" /><rect x="10" y="0" width="1.02" height="1.02" className="p0" /><rect x="11" y="0" width="1.02" height="1.02" className="p0" /><rect x="0" y="1" width="1.02" height="1.02" className="p8" /><rect x="1" y="1" width="1.02" height="1.02" className="p8" /><rect x="2" y="1" width="1.02" height="1.02" className="p8" /><rect x="3" y="1" width="1.02" height="1.02" className="p8" /><rect x="4" y="1" width="1.02" height="1.02" className="p8" /><rect x="5" y="1" width="1.02" height="1.02" className="p8" /><rect x="6" y="1" width="1.02" height="1.02" className="p8" /><rect x="7" y="1" width="1.02" height="1.02" className="p3" /><rect x="8" y="1" width="1.02" height="1.02" className="p5" /><rect x="9" y="1" width="1.02" height="1.02" className="p3" /><rect x="10" y="1" width="1.02" height="1.02" className="p8" /><rect x="11" y="1" width="1.02" height="1.02" className="p8" /><rect x="0" y="2" width="1.02" height="1.02" className="p3" /><rect x="1" y="2" width="1.02" height="1.02" className="p3" /><rect x="2" y="2" width="1.02" height="1.02" className="p3" /><rect x="3" y="2" width="1.02" height="1.02" className="p3" /><rect x="4" y="2" width="1.02" height="1.02" className="p3" /><rect x="5" y="2" width="1.02" height="1.02" className="p3" /><rect x="6" y="2" width="1.02" height="1.02" className="p3" /><rect x="7" y="2" width="1.02" height="1.02" className="p5" /><rect x="8" y="2" width="1.02" height="1.02" className="p9" /><rect x="9" y="2" width="1.02" height="1.02" className="p5" /><rect x="10" y="2" width="1.02" height="1.02" className="p3" /><rect x="11" y="2" width="1.02" height="1.02" className="p3" /><rect x="0" y="3" width="1.02" height="1.02" className="p10" /><rect x="1" y="3" width="1.02" height="1.02" className="p11" /><rect x="2" y="3" width="1.02" height="1.02" className="p4" /><rect x="3" y="3" width="1.02" height="1.02" className="p10" /><rect x="4" y="3" width="1.02" height="1.02" className="p4" /><rect x="5" y="3" width="1.02" height="1.02" className="p12" /><rect x="6" y="3" width="1.02" height="1.02" className="p12" /><rect x="7" y="3" width="1.02" height="1.02" className="p4" /><rect x="8" y="3" width="1.02" height="1.02" className="p5" /><rect x="9" y="3" width="1.02" height="1.02" className="p4" /><rect x="10" y="3" width="1.02" height="1.02" className="p13" /><rect x="11" y="3" width="1.02" height="1.02" className="p2" /><rect x="0" y="4" width="1.02" height="1.02" className="p14" /><rect x="1" y="4" width="1.02" height="1.02" className="p6" /><rect x="2" y="4" width="1.02" height="1.02" className="p6" /><rect x="3" y="4" width="1.02" height="1.02" className="p12" /><rect x="4" y="4" width="1.02" height="1.02" className="p6" /><rect x="5" y="4" width="1.02" height="1.02" className="p6" /><rect x="6" y="4" width="1.02" height="1.02" className="p6" /><rect x="7" y="4" width="1.02" height="1.02" className="p6" /><rect x="8" y="4" width="1.02" height="1.02" className="p6" /><rect x="9" y="4" width="1.02" height="1.02" className="p6" /><rect x="10" y="4" width="1.02" height="1.02" className="p6" /><rect x="11" y="4" width="1.02" height="1.02" className="p6" /><rect x="0" y="5" width="1.02" height="1.02" className="p6" /><rect x="1" y="5" width="1.02" height="1.02" className="p6" /><rect x="2" y="5" width="1.02" height="1.02" className="p15" /><rect x="3" y="5" width="1.02" height="1.02" className="p16" /><rect x="4" y="5" width="1.02" height="1.02" className="p6" /><rect x="5" y="5" width="1.02" height="1.02" className="p6" /><rect x="6" y="5" width="1.02" height="1.02" className="p6" /><rect x="7" y="5" width="1.02" height="1.02" className="p6" /><rect x="8" y="5" width="1.02" height="1.02" className="p16" /><rect x="9" y="5" width="1.02" height="1.02" className="p16" /><rect x="10" y="5" width="1.02" height="1.02" className="p6" /><rect x="11" y="5" width="1.02" height="1.02" className="p6" /><rect x="0" y="6" width="1.02" height="1.02" className="p7" /><rect x="1" y="6" width="1.02" height="1.02" className="p7" /><rect x="2" y="6" width="1.02" height="1.02" className="p7" /><rect x="3" y="6" width="1.02" height="1.02" className="p7" /><rect x="4" y="6" width="1.02" height="1.02" className="p7" /><rect x="5" y="6" width="1.02" height="1.02" className="p15" /><rect x="6" y="6" width="1.02" height="1.02" className="p7" /><rect x="7" y="6" width="1.02" height="1.02" className="p7" /><rect x="8" y="6" width="1.02" height="1.02" className="p7" /><rect x="9" y="6" width="1.02" height="1.02" className="p7" /><rect x="10" y="6" width="1.02" height="1.02" className="p7" /><rect x="11" y="6" width="1.02" height="1.02" className="p7" /><rect x="0" y="7" width="1.02" height="1.02" className="p7" /><rect x="1" y="7" width="1.02" height="1.02" className="p7" /><rect x="2" y="7" width="1.02" height="1.02" className="p7" /><rect x="3" y="7" width="1.02" height="1.02" className="p7" /><rect x="4" y="7" width="1.02" height="1.02" className="p7" /><rect x="5" y="7" width="1.02" height="1.02" className="p7" /><rect x="6" y="7" width="1.02" height="1.02" className="p7" /><rect x="7" y="7" width="1.02" height="1.02" className="p7" /><rect x="8" y="7" width="1.02" height="1.02" className="p7" /><rect x="9" y="7" width="1.02" height="1.02" className="p7" /><rect x="10" y="7" width="1.02" height="1.02" className="p7" /><rect x="11" y="7" width="1.02" height="1.02" className="p7" /></svg><svg className="vc" viewBox="0 0 300 200" preserveAspectRatio="none" aria-hidden="true"><defs><linearGradient id="uvq10-pix-sky" x1="0" y1="0" x2="0" y2="1"><stop offset="0" className="s0" /><stop offset=".6" className="s1" /></linearGradient></defs><rect width="300" height="200" fill="url(#uvq10-pix-sky)" /><circle cx="210" cy="60" r="30" className="sun" /><polygon points="0,200 0,120 48,84 90,110 150,72 204,104 252,88 300,100 300,200" className="far" /><polygon points="0,200 0,156 66,130 138,160 222,134 300,148 300,200" className="near" /></svg><i className="pg"></i></div></div>
      </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 “Progressive image loader” block (Loaders) from AIMRAN Library to my project.

## What it is
A landscape shows up first in chunky pixels, then finer ones and finally sharp, like a photo on a slow connection.

## Chosen settings
- Main color: #ff7b39
- Secondary color: #2a6f97
- Size: 16px (from 12 to 24px)
- Speed: 1x (from 0.5 to 2x)

## 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
import type { CSSProperties } from "react";

const css = `
.uvq10-pix {
  font-family: -apple-system,BlinkMacSystemFont,"SF Pro Text","Inter",system-ui,sans-serif;
  font-size: var(--s);
  color: var(--fg);
  -webkit-tap-highlight-color: transparent;
  position: relative;
}

.uvq10-pix .sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.uvq10-pix .im {
  position: relative;
  width: 10.5em;
  height: 7em;
  border-radius: .6em;
  overflow: hidden;
  background: color-mix(in srgb,var(--fg) 10%,var(--bg));
  box-shadow: 0 0 0 1px color-mix(in srgb,var(--fg) 10%,transparent),0 1em 1.6em -1em rgba(0,0,0,.5);
}

.uvq10-pix svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.uvq10-pix .px {
  shape-rendering: crispEdges;
}

.uvq10-pix .l0 {
  animation: uvq10-pix-0 calc(4.4s / var(--k)) steps(1) infinite;
}

.uvq10-pix .l1 {
  animation: uvq10-pix-1 calc(4.4s / var(--k)) steps(1) infinite;
}

.uvq10-pix .vc {
  animation: uvq10-pix-2 calc(4.4s / var(--k)) infinite;
}

.uvq10-pix .pg {
  position: absolute;
  left: 0;
  bottom: 0;
  height: .22em;
  width: 100%;
  transform-origin: 0 50%;
  background: #fff;
  mix-blend-mode: difference;
  animation: uvq10-pix-p calc(4.4s / var(--k)) cubic-bezier(.25,.1,.25,1) infinite;
}

.uvq10-pix .p0 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 20%,var(--c2)) 50%,#fff);
}

.uvq10-pix .p1 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 40%,var(--c2)) 50%,#fff);
}

.uvq10-pix .p2 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 57%,var(--c2)) 70%,#fff);
}

.uvq10-pix .p3 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p4 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,color-mix(in oklab,#fff 75%,#000));
}

.uvq10-pix .p5 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 83%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p6 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 17%,var(--c2)) 60%,#000);
}

.uvq10-pix .p7 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 60%,var(--c2)) 50%,#000);
}

.uvq10-pix .p8 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 33%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p9 {
  fill: color-mix(in oklab,var(--c1) 60%,#fff);
}

.uvq10-pix .p10 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 67%,var(--c2)) 60%,#fff);
}

.uvq10-pix .p11 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 43%,var(--c2)) 70%,color-mix(in oklab,#fff 67%,#000));
}

.uvq10-pix .p12 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 17%,var(--c2)) 60%,color-mix(in oklab,#fff 25%,#000));
}

.uvq10-pix .p13 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 50%,var(--c2)) 60%,color-mix(in oklab,#fff 50%,#000));
}

.uvq10-pix .p14 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 29%,var(--c2)) 70%,color-mix(in oklab,#fff 33%,#000));
}

.uvq10-pix .p15 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 40%,var(--c2)) 50%,#000);
}

.uvq10-pix .p16 {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 33%,var(--c2)) 60%,#000);
}

.uvq10-pix .s0 {
  stop-color: color-mix(in oklab,var(--c2) 50%,#fff);
}

.uvq10-pix .s1 {
  stop-color: color-mix(in oklab,color-mix(in oklab,var(--c1) 79%,var(--c2)) 70%,#fff);
}

.uvq10-pix .sun {
  fill: color-mix(in oklab,var(--c1) 60%,#fff);
}

.uvq10-pix .far {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 8%,var(--c2)) 60%,#000);
}

.uvq10-pix .near {
  fill: color-mix(in oklab,color-mix(in oklab,var(--c1) 60%,var(--c2)) 50%,#000);
}

@keyframes uvq10-pix-0 {
  0% {
    opacity: 0;
  }
  8%,100% {
    opacity: 1;
  }
}

@keyframes uvq10-pix-1 {
  0% {
    opacity: 0;
  }
  30%,100% {
    opacity: 1;
  }
}

@keyframes uvq10-pix-2 {
  0%,54% {
    opacity: 0;
    filter: blur(6px);
  }
  56% {
    opacity: 1;
    filter: blur(5px);
  }
  76%,100% {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes uvq10-pix-p {
  0% {
    transform: scaleX(0);
    opacity: 1;
  }
  8% {
    transform: scaleX(.2);
  }
  30% {
    transform: scaleX(.5);
  }
  56% {
    transform: scaleX(.8);
  }
  76% {
    transform: scaleX(1);
    opacity: 1;
  }
  86%,100% {
    transform: scaleX(1);
    opacity: 0;
  }
}

@media (prefers-reduced-motion:reduce) {
  .uvq10-pix,.uvq10-pix *,.uvq10-pix *::before,.uvq10-pix *::after {
    animation-duration: .01ms!important;
    animation-iteration-count: 1!important;
    transition-duration: .01ms!important;
  }
}
`;

export default function LdProgressiveImage() {
  return (
    <>
      <style>{css}</style>
      <div
        style={{
          "--c1": "#ff7b39",
          "--c2": "#2a6f97",
          "--s": "16px",
          "--k": "1",
          "--fg": "#1d1d1f",
          "--bg": "#f5f5f7",
        } as CSSProperties}
      >
        <div className="uvq10-pix" role="status"><span className="sr">Loading image</span><div className="im" aria-hidden="true"><svg className="px l0" viewBox="0 0 6 4" preserveAspectRatio="none" aria-hidden="true"><rect x="0" y="0" width="1.02" height="1.02" className="p0" /><rect x="1" y="0" width="1.02" height="1.02" className="p0" /><rect x="2" y="0" width="1.02" height="1.02" className="p0" /><rect x="3" y="0" width="1.02" height="1.02" className="p0" /><rect x="4" y="0" width="1.02" height="1.02" className="p1" /><rect x="5" y="0" width="1.02" height="1.02" className="p0" /><rect x="0" y="1" width="1.02" height="1.02" className="p2" /><rect x="1" y="1" width="1.02" height="1.02" className="p3" /><rect x="2" y="1" width="1.02" height="1.02" className="p4" /><rect x="3" y="1" width="1.02" height="1.02" className="p4" /><rect x="4" y="1" width="1.02" height="1.02" className="p5" /><rect x="5" y="1" width="1.02" height="1.02" className="p2" /><rect x="0" y="2" width="1.02" height="1.02" className="p6" /><rect x="1" y="2" width="1.02" height="1.02" className="p6" /><rect x="2" y="2" width="1.02" height="1.02" className="p6" /><rect x="3" y="2" width="1.02" height="1.02" className="p6" /><rect x="4" y="2" width="1.02" height="1.02" className="p6" /><rect x="5" y="2" width="1.02" height="1.02" className="p6" /><rect x="0" y="3" width="1.02" height="1.02" className="p7" /><rect x="1" y="3" width="1.02" height="1.02" className="p7" /><rect x="2" y="3" width="1.02" height="1.02" className="p7" /><rect x="3" y="3" width="1.02" height="1.02" className="p7" /><rect x="4" y="3" width="1.02" height="1.02" className="p7" /><rect x="5" y="3" width="1.02" height="1.02" className="p7" /></svg><svg className="px l1" viewBox="0 0 12 8" preserveAspectRatio="none" aria-hidden="true"><rect x="0" y="0" width="1.02" height="1.02" className="p0" /><rect x="1" y="0" width="1.02" height="1.02" className="p0" /><rect x="2" y="0" width="1.02" height="1.02" className="p0" /><rect x="3" y="0" width="1.02" height="1.02" className="p0" /><rect x="4" y="0" width="1.02" height="1.02" className="p0" /><rect x="5" y="0" width="1.02" height="1.02" className="p0" /><rect x="6" y="0" width="1.02" height="1.02" className="p0" /><rect x="7" y="0" width="1.02" height="1.02" className="p0" /><rect x="8" y="0" width="1.02" height="1.02" className="p0" /><rect x="9" y="0" width="1.02" height="1.02" className="p0" /><rect x="10" y="0" width="1.02" height="1.02" className="p0" /><rect x="11" y="0" width="1.02" height="1.02" className="p0" /><rect x="0" y="1" width="1.02" height="1.02" className="p8" /><rect x="1" y="1" width="1.02" height="1.02" className="p8" /><rect x="2" y="1" width="1.02" height="1.02" className="p8" /><rect x="3" y="1" width="1.02" height="1.02" className="p8" /><rect x="4" y="1" width="1.02" height="1.02" className="p8" /><rect x="5" y="1" width="1.02" height="1.02" className="p8" /><rect x="6" y="1" width="1.02" height="1.02" className="p8" /><rect x="7" y="1" width="1.02" height="1.02" className="p3" /><rect x="8" y="1" width="1.02" height="1.02" className="p5" /><rect x="9" y="1" width="1.02" height="1.02" className="p3" /><rect x="10" y="1" width="1.02" height="1.02" className="p8" /><rect x="11" y="1" width="1.02" height="1.02" className="p8" /><rect x="0" y="2" width="1.02" height="1.02" className="p3" /><rect x="1" y="2" width="1.02" height="1.02" className="p3" /><rect x="2" y="2" width="1.02" height="1.02" className="p3" /><rect x="3" y="2" width="1.02" height="1.02" className="p3" /><rect x="4" y="2" width="1.02" height="1.02" className="p3" /><rect x="5" y="2" width="1.02" height="1.02" className="p3" /><rect x="6" y="2" width="1.02" height="1.02" className="p3" /><rect x="7" y="2" width="1.02" height="1.02" className="p5" /><rect x="8" y="2" width="1.02" height="1.02" className="p9" /><rect x="9" y="2" width="1.02" height="1.02" className="p5" /><rect x="10" y="2" width="1.02" height="1.02" className="p3" /><rect x="11" y="2" width="1.02" height="1.02" className="p3" /><rect x="0" y="3" width="1.02" height="1.02" className="p10" /><rect x="1" y="3" width="1.02" height="1.02" className="p11" /><rect x="2" y="3" width="1.02" height="1.02" className="p4" /><rect x="3" y="3" width="1.02" height="1.02" className="p10" /><rect x="4" y="3" width="1.02" height="1.02" className="p4" /><rect x="5" y="3" width="1.02" height="1.02" className="p12" /><rect x="6" y="3" width="1.02" height="1.02" className="p12" /><rect x="7" y="3" width="1.02" height="1.02" className="p4" /><rect x="8" y="3" width="1.02" height="1.02" className="p5" /><rect x="9" y="3" width="1.02" height="1.02" className="p4" /><rect x="10" y="3" width="1.02" height="1.02" className="p13" /><rect x="11" y="3" width="1.02" height="1.02" className="p2" /><rect x="0" y="4" width="1.02" height="1.02" className="p14" /><rect x="1" y="4" width="1.02" height="1.02" className="p6" /><rect x="2" y="4" width="1.02" height="1.02" className="p6" /><rect x="3" y="4" width="1.02" height="1.02" className="p12" /><rect x="4" y="4" width="1.02" height="1.02" className="p6" /><rect x="5" y="4" width="1.02" height="1.02" className="p6" /><rect x="6" y="4" width="1.02" height="1.02" className="p6" /><rect x="7" y="4" width="1.02" height="1.02" className="p6" /><rect x="8" y="4" width="1.02" height="1.02" className="p6" /><rect x="9" y="4" width="1.02" height="1.02" className="p6" /><rect x="10" y="4" width="1.02" height="1.02" className="p6" /><rect x="11" y="4" width="1.02" height="1.02" className="p6" /><rect x="0" y="5" width="1.02" height="1.02" className="p6" /><rect x="1" y="5" width="1.02" height="1.02" className="p6" /><rect x="2" y="5" width="1.02" height="1.02" className="p15" /><rect x="3" y="5" width="1.02" height="1.02" className="p16" /><rect x="4" y="5" width="1.02" height="1.02" className="p6" /><rect x="5" y="5" width="1.02" height="1.02" className="p6" /><rect x="6" y="5" width="1.02" height="1.02" className="p6" /><rect x="7" y="5" width="1.02" height="1.02" className="p6" /><rect x="8" y="5" width="1.02" height="1.02" className="p16" /><rect x="9" y="5" width="1.02" height="1.02" className="p16" /><rect x="10" y="5" width="1.02" height="1.02" className="p6" /><rect x="11" y="5" width="1.02" height="1.02" className="p6" /><rect x="0" y="6" width="1.02" height="1.02" className="p7" /><rect x="1" y="6" width="1.02" height="1.02" className="p7" /><rect x="2" y="6" width="1.02" height="1.02" className="p7" /><rect x="3" y="6" width="1.02" height="1.02" className="p7" /><rect x="4" y="6" width="1.02" height="1.02" className="p7" /><rect x="5" y="6" width="1.02" height="1.02" className="p15" /><rect x="6" y="6" width="1.02" height="1.02" className="p7" /><rect x="7" y="6" width="1.02" height="1.02" className="p7" /><rect x="8" y="6" width="1.02" height="1.02" className="p7" /><rect x="9" y="6" width="1.02" height="1.02" className="p7" /><rect x="10" y="6" width="1.02" height="1.02" className="p7" /><rect x="11" y="6" width="1.02" height="1.02" className="p7" /><rect x="0" y="7" width="1.02" height="1.02" className="p7" /><rect x="1" y="7" width="1.02" height="1.02" className="p7" /><rect x="2" y="7" width="1.02" height="1.02" className="p7" /><rect x="3" y="7" width="1.02" height="1.02" className="p7" /><rect x="4" y="7" width="1.02" height="1.02" className="p7" /><rect x="5" y="7" width="1.02" height="1.02" className="p7" /><rect x="6" y="7" width="1.02" height="1.02" className="p7" /><rect x="7" y="7" width="1.02" height="1.02" className="p7" /><rect x="8" y="7" width="1.02" height="1.02" className="p7" /><rect x="9" y="7" width="1.02" height="1.02" className="p7" /><rect x="10" y="7" width="1.02" height="1.02" className="p7" /><rect x="11" y="7" width="1.02" height="1.02" className="p7" /></svg><svg className="vc" viewBox="0 0 300 200" preserveAspectRatio="none" aria-hidden="true"><defs><linearGradient id="uvq10-pix-sky" x1="0" y1="0" x2="0" y2="1"><stop offset="0" className="s0" /><stop offset=".6" className="s1" /></linearGradient></defs><rect width="300" height="200" fill="url(#uvq10-pix-sky)" /><circle cx="210" cy="60" r="30" className="sun" /><polygon points="0,200 0,120 48,84 90,110 150,72 204,104 252,88 300,100 300,200" className="far" /><polygon points="0,200 0,156 66,130 138,160 222,134 300,148 300,200" className="near" /></svg><i className="pg"></i></div></div>
      </div>
    </>
  );
}
```

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