{
  "$schema": "https://mian.ro/schema/v2/registry.json",
  "schemaVersion": "2.0.0",
  "generatedAt": "2026-10-02T13:14:06.957Z",
  "id": "gradient",
  "name": "Gradient backdrop",
  "category": "Layout & utilities",
  "description": "Soft mesh gradients for a band, a hero or a media frame. By default they are mixed from the noodle’s own colours, so they follow the noodle and the mode; eight named palettes are there when you want a fixed mood.",
  "tags": [
    "gradient",
    "mesh gradient",
    "background",
    "backdrop",
    "aurora",
    "hero background",
    "grain",
    "noise texture",
    "colour wash"
  ],
  "requiresJs": false,
  "license": "LicenseRef-MIAN-1.0",
  "composition": {
    "role": null,
    "intents": [
      "gradient background",
      "mesh gradient",
      "hero backdrop",
      "colour wash",
      "grain texture",
      "aurora background"
    ],
    "prominence": null,
    "density": null,
    "worksAfter": [],
    "worksBefore": [],
    "alternatives": [
      "media"
    ],
    "avoid": "Never a purple-to-blue wash behind a centred headline, and never gradient-filled text. One gradient per page, as a backdrop or a media frame."
  },
  "url": "https://mian.ro/components/gradient",
  "markdownUrl": "https://mian.ro/ai/components/gradient.md",
  "classes": [
    {
      "name": "mn-gradient",
      "description": "A four-point mesh from the noodle’s primary, accent, info and success colours, at a strength that keeps text readable."
    },
    {
      "name": "mn-gradient-aurora · -dawn · -tide · -ember · -moss · -dusk · -steel · -sand",
      "description": "Named palettes."
    },
    {
      "name": "mn-gradient-vivid",
      "description": "Full strength. For artwork and media frames, not behind body text."
    },
    {
      "name": "mn-gradient-linear · mn-gradient-conic",
      "description": "A two-colour sweep or a conic sweep instead of a mesh. --g-angle sets the direction."
    },
    {
      "name": "mn-gradient-animate",
      "description": "A slow drift (26 s). Stops under reduced motion."
    },
    {
      "name": "mn-gradient-flow",
      "description": "Soft blurred shapes that turn and breathe slowly, like light through liquid. Add mn-gradient-still to freeze it. Stops under reduced motion."
    },
    {
      "name": "mn-gradient-halo · -lagoon · -citrus · -nightfall",
      "description": "Three- and four-colour palettes made for the flowing variant."
    },
    {
      "name": "mn-gridlines",
      "description": "A fine grid of lines as a backdrop; --grid sets the cell size."
    },
    {
      "name": "mn-grain",
      "description": "A fine film grain over the element, which breaks up banding."
    },
    {
      "name": "--g1 … --g4 · --g-mix",
      "description": "Your own four colours and the strength (default 24%)."
    }
  ],
  "accessibility": [
    "Text on the default strength keeps the noodle’s contrast; with mn-gradient-vivid put text on a surface (a card) or check the pair yourself.",
    "A gradient is decoration: never let it carry meaning.",
    "The drift is slow and stops under prefers-reduced-motion."
  ],
  "examples": [
    {
      "title": "From the noodle",
      "description": "Change the noodle above and the wash changes with it.",
      "html": "<div class=\"mn-gradient mn-grain\" style=\"padding:2.5rem 1.5rem;border-radius:var(--mn-radius-box);border:1px solid var(--mn-border)\">\n  <h3 class=\"mn-h3\" style=\"margin:0 0 .4rem\">Quarterly review</h3><p class=\"mn-muted\" style=\"margin:0;max-width:30rem\">The wash is mixed from this noodle’s primary, accent, info and success colours at 24%, so the text keeps its contrast.</p>\n</div>"
    },
    {
      "title": "Named palettes",
      "description": null,
      "html": "<div class=\"mn-grid\" style=\"--mn-min:9rem\">\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-aurora mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"aurora gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-aurora</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-dawn mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"dawn gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-dawn</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-tide mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"tide gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-tide</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-ember mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"ember gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-ember</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-moss mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"moss gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-moss</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-dusk mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"dusk gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-dusk</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-steel mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"steel gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-steel</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-vivid mn-gradient-sand mn-grain\" style=\"aspect-ratio:4/3;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"sand gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-sand</figcaption></figure>\n</div>"
    },
    {
      "title": "Flowing",
      "description": "Blurred shapes that move slowly. Use one per page, behind a short statement.",
      "html": "<div class=\"mn-grid\" style=\"--mn-min:14rem\">\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-flow mn-gradient-halo mn-grain\" style=\"aspect-ratio:16/10;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"halo flowing gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-flow mn-gradient-halo</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-flow mn-gradient-lagoon mn-grain\" style=\"aspect-ratio:16/10;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"lagoon flowing gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-flow mn-gradient-lagoon</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-flow mn-gradient-citrus mn-grain\" style=\"aspect-ratio:16/10;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"citrus flowing gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-flow mn-gradient-citrus</figcaption></figure>\n  <figure style=\"margin:0\"><div class=\"mn-gradient mn-gradient-flow mn-gradient-nightfall mn-grain\" style=\"aspect-ratio:16/10;border-radius:var(--mn-radius-box)\" role=\"img\" aria-label=\"nightfall flowing gradient\"></div><figcaption class=\"mn-caption\">mn-gradient-flow mn-gradient-nightfall</figcaption></figure>\n</div>"
    },
    {
      "title": "Drifting, behind a card",
      "description": null,
      "html": "<div class=\"mn-gradient mn-gradient-vivid mn-gradient-tide mn-gradient-animate mn-grain\" style=\"display:grid;place-items:center;padding:3rem 1.5rem;border-radius:var(--mn-radius-box)\">\n  <div class=\"mn-card\" style=\"max-width:22rem;background:var(--mn-surface)\"><div class=\"mn-card-body\"><h3 class=\"mn-card-title\">Text sits on a surface</h3><p class=\"mn-card-description\">At full strength the backdrop is artwork. Put words on an opaque surface.</p></div></div>\n</div>"
    }
  ],
  "css": ".mn-gradient {\n  --g1: var(--mn-primary); --g2: var(--mn-accent); --g3: var(--mn-info); --g4: var(--mn-success); --g-mix: 24%; --g-base: var(--mn-bg);\n  position: relative; isolation: isolate; background-color: var(--g-base);\n  background-image:\n    radial-gradient(80% 110% at 6% 0%, color-mix(in oklab, var(--g1) var(--g-mix), transparent), transparent 75%),\n    radial-gradient(70% 100% at 98% 8%, color-mix(in oklab, var(--g2) var(--g-mix), transparent), transparent 72%),\n    radial-gradient(90% 100% at 72% 112%, color-mix(in oklab, var(--g3) var(--g-mix), transparent), transparent 75%),\n    radial-gradient(65% 90% at 12% 104%, color-mix(in oklab, var(--g4) var(--g-mix), transparent), transparent 72%);\n}\n.mn-gradient-vivid { --g-mix: 88%; --g-base: color-mix(in oklab, var(--g2) 50%, var(--g4)); }\n.mn-gradient-aurora { --g1: #2bd4a4; --g2: #3d8bfd; --g3: #b6e84a; --g4: #19b8d6; }\n.mn-gradient-dawn { --g1: #ff9a6c; --g2: #ffc75f; --g3: #f76d8e; --g4: #ffd9b0; }\n.mn-gradient-tide { --g1: #0b5cad; --g2: #12a5b8; --g3: #0a3d7a; --g4: #55d3c8; }\n.mn-gradient-ember { --g1: #e2432c; --g2: #f59e0b; --g3: #a61e2b; --g4: #ff7a3d; }\n.mn-gradient-moss { --g1: #6f8f3a; --g2: #d6c48a; --g3: #2f6b4f; --g4: #a7b86a; }\n.mn-gradient-dusk { --g1: #7a2f4f; --g2: #e07a5f; --g3: #1f3358; --g4: #c9596b; }\n.mn-gradient-steel { --g1: #6b7c93; --g2: #a9b6c6; --g3: #3d4c63; --g4: #8fa3b8; }\n.mn-gradient-sand { --g1: #d9c3a0; --g2: #e9d9c0; --g3: #b89b72; --g4: #cdb893; }\n.mn-gradient-linear { background-image: linear-gradient(var(--g-angle, 135deg), color-mix(in oklab, var(--g1) var(--g-mix), var(--mn-bg)), color-mix(in oklab, var(--g2) var(--g-mix), var(--mn-bg))); }\n.mn-gradient-conic { background-image: conic-gradient(from var(--g-angle, 210deg) at 60% 55%, color-mix(in oklab, var(--g1) var(--g-mix), var(--mn-bg)), color-mix(in oklab, var(--g2) var(--g-mix), var(--mn-bg)), color-mix(in oklab, var(--g3) var(--g-mix), var(--mn-bg)), color-mix(in oklab, var(--g4) var(--g-mix), var(--mn-bg)), color-mix(in oklab, var(--g1) var(--g-mix), var(--mn-bg))); }\n.mn-gradient-animate { background-size: 170% 170%; animation: mn-gradient-drift 26s ease-in-out infinite alternate; }\n@keyframes mn-gradient-drift { 0% { background-position: 0% 0%; } 50% { background-position: 100% 40%; } 100% { background-position: 30% 100%; } }\n.mn-grain::after {\n  content: \"\"; position: absolute; inset: 0; z-index: -1; border-radius: inherit; pointer-events: none; opacity: var(--grain, .28); mix-blend-mode: overlay;\n  background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E\");\n}\n.mn-grain { position: relative; isolation: isolate; }\n@media (prefers-reduced-motion: reduce) { .mn-gradient-animate { animation: none; } }",
  "js": null,
  "install": {
    "css": "https://mian.ro/dist/mian.css",
    "js": null,
    "registryItem": "https://mian.ro/r/gradient.json"
  }
}
