Open demo

CSS code

HTML
<div><span class="lbl">Mesh gradient with gradient headline text</span>
<section class="dk dk-mesh" aria-labelledby="dk-nimbus-title">
  <nav class="dk-nav" aria-label="Nimbus">
    <a class="dk-logo" href="#"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true" focusable="false"><defs><linearGradient id="dk-g" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#c4b5fd"/><stop offset="1" stop-color="#67e8f9"/></linearGradient></defs><path d="M7 19a5 5 0 0 1 .6-10A7 7 0 0 1 21 11a4 4 0 0 1-1 8z" fill="url(#dk-g)"/></svg>Nimbus</a>
    <ul><li><a href="#">Product</a></li><li><a href="#">Security</a></li><li><a href="#">Pricing</a></li></ul>
    <a href="#">Sign in</a>
  </nav>
  <div class="dk-body">
    <a class="dk-pill" href="#"><b>New</b>Nimbus 4 reads your slides <span aria-hidden="true">→</span></a>
    <h1 class="dk-title" id="dk-nimbus-title">Answers from <span class="dk-grad">your own documents</span></h1>
    <p class="dk-sub">Connect your drive, wiki and inbox. Nimbus answers questions in plain language and shows the page every sentence came from.</p>
    <div class="dk-ctas"><a class="dk-btn solid" href="#">Try it with your files</a><a class="dk-btn glass" href="#">Watch a 3-minute demo</a></div>
    <p class="dk-note">SOC 2 Type II · Your data never trains our models</p>
  </div>
  <div class="dk-ask" role="img" aria-label="Example: asked what changed in the refund policy since March, Nimbus answers that refunds now run 30 days instead of 14 and cites two documents">
    <div class="dk-q"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg><span>What changed in our refund policy since March?</span><kbd>⏎</kbd></div>
    <p class="dk-a">Refunds now run for <mark>30 days instead of 14</mark>, and digital orders can be refunded once without a reason. The change took effect on 2 June.</p>
    <ul class="dk-cites"><li>refund-policy-v3.pdf · p. 2</li><li>Support wiki · Refunds</li></ul>
  </div>
</section></div>

<div><span class="lbl">Spotlight and grid lines with a live metrics panel</span>
<section class="dk dk-kiln" aria-labelledby="dk-kiln-title">
  <nav class="dk-nav" aria-label="Kiln">
    <a class="dk-logo" href="#"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true" focusable="false"><rect x="2" y="2" width="22" height="22" rx="6" fill="#a3e635"/><path d="M9 7v12M9 13l7-6M11 12l6 7" stroke="#0b1405" stroke-width="2.6" stroke-linecap="round" fill="none"/></svg>Kiln</a>
    <ul><li><a href="#">Docs</a></li><li><a href="#">Regions</a></li><li><a href="#">Pricing</a></li><li><a href="#">Sign in</a></li></ul>
  </nav>
  <div class="dk-split">
    <div>
      <p class="dk-tag"><i aria-hidden="true"></i>Postgres at the edge</p>
      <h2 class="dk-title" id="dk-kiln-title">Reads in 38 ms from anywhere on earth</h2>
      <p class="dk-sub">Kiln replicates your database to 24 regions and routes every query to the closest copy, with writes that stay strongly consistent.</p>
      <div class="dk-ctas"><a class="dk-btn solid" href="#">Start building free</a><a class="dk-btn glass" href="#">Talk to an engineer</a></div>
      <p class="dk-install"><span aria-hidden="true">$</span>npm install @kiln/client</p>
    </div>
    <div class="dk-panel" role="img" aria-label="Kiln dashboard: p95 read latency 38 milliseconds, 99.99 percent uptime, 24 regions, with Frankfurt, Singapore and Virginia all healthy">
      <div class="dk-panel-head"><b>shop-prod</b><span class="dk-live">Live</span></div>
      <dl class="dk-metrics"><div><dt>p95 read</dt><dd>38 ms</dd></div><div><dt>Uptime</dt><dd>99.99%</dd></div><div><dt>Regions</dt><dd>24</dd></div></dl>
      <svg class="dk-spark" viewBox="0 0 300 96" preserveAspectRatio="none" aria-hidden="true" focusable="false"><defs><linearGradient id="dk-sp" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#a3e635" stop-opacity=".35"/><stop offset="1" stop-color="#a3e635" stop-opacity="0"/></linearGradient></defs><path d="M0 70 L25 64 50 68 75 52 100 58 125 40 150 46 175 30 200 36 225 22 250 28 275 18 300 24 V96 H0Z" fill="url(#dk-sp)"/><path d="M0 70 L25 64 50 68 75 52 100 58 125 40 150 46 175 30 200 36 225 22 250 28 275 18 300 24" fill="none" stroke="#a3e635" stroke-width="2.5"/></svg>
      <ul class="dk-regions"><li>Frankfurt <span>fra1 · 21 ms</span></li><li>Singapore <span>sin1 · 34 ms</span></li><li>Virginia <span>iad1 · 29 ms</span></li></ul>
    </div>
  </div>
</section></div>
CSS
/* Dark heroes on mesh and spotlight gradients. Every colour is checked against the lightest part of the gradient
   it sits on; gradient headline text only uses stops that pass 4.5:1 on that ground, with a solid colour fallback. */
.dk{--dk-bg:#07070c;--dk-text:#f4f4f8;--dk-muted:#b4b4c6;--dk-line:rgba(255,255,255,.12);--dk-accent:#a78bfa;--dk-radius:28px;
  position:relative;isolation:isolate;overflow:hidden;border-radius:var(--dk-radius);background:var(--dk-bg);color:var(--dk-text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.5}
.dk :where(h1,h2,p,ul,dl,dd,pre){margin:0;padding:0}
.dk a{color:inherit;text-decoration:none}
.dk a:focus-visible{outline:3px solid var(--dk-accent);outline-offset:3px;border-radius:10px}
.dk-nav{display:flex;align-items:center;gap:28px;padding:24px 36px}
.dk-logo{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:1.06rem}
.dk-nav ul{display:flex;gap:26px;margin-left:auto;list-style:none;font-size:.92rem;color:var(--dk-muted)}
.dk-nav ul a:hover{color:var(--dk-text)}
.dk-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 24px;border-radius:12px;font-weight:700;
  border:1px solid transparent;transition:background-color .2s,border-color .2s,box-shadow .2s}
.dk-btn.solid{background:#fff;color:#0b0b12}
.dk .dk-btn.solid{color:#0b0b12}
.dk-btn.solid:hover{box-shadow:0 0 0 4px rgba(167,139,250,.35)}
.dk-btn.glass{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.06)}
.dk-btn.glass:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.35)}
/* 1. mesh gradient, centred */
.dk-mesh{text-align:center;padding-bottom:0}
.dk-mesh::before{content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(40% 45% at 20% 25%,rgba(124,58,237,.55),transparent 70%),radial-gradient(35% 40% at 82% 18%,rgba(8,145,178,.45),transparent 70%),
  radial-gradient(45% 50% at 60% 85%,rgba(219,39,119,.32),transparent 70%),radial-gradient(30% 35% at 40% 60%,rgba(79,70,229,.35),transparent 70%)}
.dk-mesh::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent 55%,var(--dk-bg))}
.dk-mesh .dk-nav ul{margin:0 auto}
.dk-mesh .dk-nav > a:last-child{font-size:.92rem;font-weight:600}
.dk-body{max-width:820px;margin:0 auto;padding:48px 24px 0}
.dk-pill{display:inline-flex;align-items:center;gap:10px;padding:6px 14px 6px 6px;border:1px solid rgba(255,255,255,.18);border-radius:999px;
  background:rgba(255,255,255,.06);font-size:.86rem;color:#e4e4ee;backdrop-filter:blur(8px)}
.dk-pill b{padding:2px 10px;border-radius:999px;background:#ede9fe;color:#4c1d95;font-size:.76rem}
.dk-title{margin-top:26px;font-size:clamp(2.4rem,5.8vw,4.4rem);line-height:1.03;letter-spacing:-.04em;font-weight:800}
.dk-grad{color:#ddd6fe;background:linear-gradient(92deg,#ddd6fe 0%,#a5f3fc 50%,#fbcfe8 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.dk-sub{max-width:600px;margin:22px auto 0;font-size:1.12rem;color:var(--dk-muted)}
.dk-ctas{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:34px}
.dk-note{margin-top:18px;font-size:.86rem;color:var(--dk-muted)}
.dk-ask{max-width:720px;margin:52px auto -40px;padding:18px 18px 56px;border:1px solid rgba(255,255,255,.14);border-radius:20px 20px 0 0;
  background:linear-gradient(rgba(23,21,40,.9),rgba(12,11,22,.95));box-shadow:0 -20px 80px -20px rgba(124,58,237,.45);text-align:left}
.dk-q{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.04);color:#e4e4ee}
.dk-q svg{flex:none;color:#c4b5fd}
.dk-q span{flex:1}
.dk-q kbd{padding:2px 8px;border:1px solid rgba(255,255,255,.2);border-radius:6px;font:600 .74rem ui-monospace,SFMono-Regular,Menlo,monospace;color:#c8c8d6}
.dk-a{margin-top:16px;padding:0 4px;color:#d6d6e2;font-size:.95rem}
.dk-a mark{background:rgba(167,139,250,.22);color:#f4f4f8;border-radius:4px;padding:0 3px}
.dk-cites{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding:0 4px;list-style:none}
.dk-cites li{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid rgba(255,255,255,.16);border-radius:8px;font-size:.78rem;color:#c8c8d6}
/* 2. spotlight + grid, split */
.dk-kiln{--dk-bg:#050807;--dk-muted:#a9b5ad;--dk-accent:#a3e635}
.dk-kiln::before{content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(60% 70% at 0% 0%,rgba(163,230,53,.18),transparent 60%),
  linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px) 0 0/48px 48px,linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px) 0 0/48px 48px;
  mask-image:radial-gradient(90% 90% at 30% 20%,#000 40%,transparent)}
.dk-split{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;padding:36px 36px 60px}
.dk-tag{display:inline-flex;gap:8px;align-items:center;font:600 .8rem ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--dk-accent)}
.dk-tag i{width:8px;height:8px;border-radius:2px;background:var(--dk-accent);box-shadow:0 0 12px var(--dk-accent)}
.dk-kiln .dk-title{text-align:left;font-size:clamp(2.3rem,5vw,3.8rem)}
.dk-kiln .dk-sub{margin:20px 0 0;max-width:500px}
.dk-kiln .dk-ctas{justify-content:flex-start}
.dk-kiln .dk-btn.solid{background:var(--dk-accent);color:#0b1405}
.dk-kiln .dk-btn.solid:hover{box-shadow:0 0 0 4px rgba(163,230,53,.3)}
.dk-install{display:inline-flex;align-items:center;gap:12px;margin-top:26px;padding:10px 16px;border:1px dashed rgba(255,255,255,.22);border-radius:10px;
  font:500 .88rem ui-monospace,SFMono-Regular,Menlo,monospace;color:#d9e2dc}
.dk-install span{color:var(--dk-accent)}
.dk-panel{padding:22px;border:1px solid rgba(255,255,255,.12);border-radius:20px;background:rgba(14,20,17,.85);box-shadow:0 40px 80px -40px rgba(163,230,53,.35)}
.dk-panel-head{display:flex;justify-content:space-between;align-items:center;font-size:.86rem;color:var(--dk-muted)}
.dk-panel-head b{color:var(--dk-text);font-size:.95rem}
.dk-live{display:inline-flex;align-items:center;gap:6px;color:#bef264;font-weight:600}
.dk-live::before{content:"";width:7px;height:7px;border-radius:50%;background:#a3e635}
.dk-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.dk-metrics div{padding:12px;border:1px solid rgba(255,255,255,.1);border-radius:12px}
.dk-metrics dt{font-size:.74rem;color:var(--dk-muted)}
.dk-metrics dd{font-size:1.35rem;font-weight:800;letter-spacing:-.02em}
.dk-spark{display:block;width:100%;height:96px;margin-top:14px}
.dk-regions{display:grid;gap:8px;margin-top:14px;list-style:none;font-size:.84rem}
.dk-regions li{display:flex;justify-content:space-between;padding:8px 10px;border-radius:8px;background:rgba(255,255,255,.04)}
.dk-regions span{color:var(--dk-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
@media (max-width:991px){
  .dk-nav{padding:20px 22px}
  .dk-nav ul{display:none}
  .dk-mesh .dk-nav > a:last-child{margin-left:auto}
  .dk-body{padding-top:28px}
  .dk-btn{flex:1 1 100%}
  .dk-ask{margin:40px 14px -40px}
  .dk-split{grid-template-columns:1fr;padding:20px 22px 32px}
  .dk-install{display:flex;font-size:.8rem}
  .dk-kiln .dk-nav ul{display:flex}
  .dk-kiln .dk-nav li:not(:last-child){display:none}
  .dk-metrics{gap:8px}
  .dk-metrics div{padding:10px}
  .dk-metrics dd{font-size:1.05rem}
}
@media (prefers-reduced-motion:reduce){.dk *{transition:none!important}}

Bootstrap 5 code

Requires: Bootstrap 5.3.8 CSS

HTML
<div><span class="lbl">Mesh gradient with gradient headline text</span>
<section class="dk dk-mesh text-center" aria-labelledby="dk-nimbus-title">
  <nav class="dk-nav d-flex align-items-center" aria-label="Nimbus">
    <a class="dk-logo d-inline-flex align-items-center" href="#"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true" focusable="false"><defs><linearGradient id="dkb-g" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#c4b5fd"/><stop offset="1" stop-color="#67e8f9"/></linearGradient></defs><path d="M7 19a5 5 0 0 1 .6-10A7 7 0 0 1 21 11a4 4 0 0 1-1 8z" fill="url(#dkb-g)"/></svg>Nimbus</a>
    <ul class="nav mx-auto d-none d-lg-flex"><li class="nav-item"><a class="nav-link" href="#">Product</a></li><li class="nav-item"><a class="nav-link" href="#">Security</a></li><li class="nav-item"><a class="nav-link" href="#">Pricing</a></li></ul>
    <a class="ms-auto ms-lg-0" href="#">Sign in</a>
  </nav>
  <div class="dk-body mx-auto">
    <a class="dk-pill d-inline-flex align-items-center rounded-pill" href="#"><span class="badge rounded-pill">New</span>Nimbus 4 reads your slides <span aria-hidden="true">→</span></a>
    <h1 class="dk-title" id="dk-nimbus-title">Answers from <span class="dk-grad">your own documents</span></h1>
    <p class="dk-sub">Connect your drive, wiki and inbox. Nimbus answers questions in plain language and shows the page every sentence came from.</p>
    <div class="dk-ctas d-flex flex-wrap justify-content-center"><a class="btn dk-btn solid" href="#">Try it with your files</a><a class="btn dk-btn glass" href="#">Watch a 3-minute demo</a></div>
    <p class="dk-note">SOC 2 Type II · Your data never trains our models</p>
  </div>
  <div class="dk-ask text-start" role="img" aria-label="Example: asked what changed in the refund policy since March, Nimbus answers that refunds now run 30 days instead of 14 and cites two documents">
    <div class="dk-q d-flex align-items-center"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg><span class="flex-grow-1">What changed in our refund policy since March?</span><kbd>⏎</kbd></div>
    <p class="dk-a">Refunds now run for <mark>30 days instead of 14</mark>, and digital orders can be refunded once without a reason. The change took effect on 2 June.</p>
    <ul class="dk-cites list-unstyled d-flex flex-wrap"><li>refund-policy-v3.pdf · p. 2</li><li>Support wiki · Refunds</li></ul>
  </div>
</section></div>

<div><span class="lbl">Spotlight and grid lines with a live metrics panel</span>
<section class="dk dk-kiln" aria-labelledby="dk-kiln-title">
  <nav class="dk-nav d-flex align-items-center" aria-label="Kiln">
    <a class="dk-logo d-inline-flex align-items-center" href="#"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true" focusable="false"><rect x="2" y="2" width="22" height="22" rx="6" fill="#a3e635"/><path d="M9 7v12M9 13l7-6M11 12l6 7" stroke="#0b1405" stroke-width="2.6" stroke-linecap="round" fill="none"/></svg>Kiln</a>
    <ul class="nav ms-auto"><li class="nav-item d-none d-lg-block"><a class="nav-link" href="#">Docs</a></li><li class="nav-item d-none d-lg-block"><a class="nav-link" href="#">Regions</a></li><li class="nav-item d-none d-lg-block"><a class="nav-link" href="#">Pricing</a></li><li class="nav-item"><a class="nav-link" href="#">Sign in</a></li></ul>
  </nav>
  <div class="dk-split row align-items-center">
    <div class="col-lg-6">
      <p class="dk-tag d-inline-flex align-items-center"><i aria-hidden="true"></i>Postgres at the edge</p>
      <h2 class="dk-title" id="dk-kiln-title">Reads in 38 ms from anywhere on earth</h2>
      <p class="dk-sub">Kiln replicates your database to 24 regions and routes every query to the closest copy, with writes that stay strongly consistent.</p>
      <div class="dk-ctas d-flex flex-wrap"><a class="btn dk-btn solid" href="#">Start building free</a><a class="btn dk-btn glass" href="#">Talk to an engineer</a></div>
      <p class="dk-install d-flex d-lg-inline-flex align-items-center"><span aria-hidden="true">$</span>npm install @kiln/client</p>
    </div>
    <div class="col-lg-6">
      <div class="card dk-panel" role="img" aria-label="Kiln dashboard: p95 read latency 38 milliseconds, 99.99 percent uptime, 24 regions, with Frankfurt, Singapore and Virginia all healthy">
        <div class="card-body">
          <div class="dk-panel-head d-flex justify-content-between align-items-center"><b>shop-prod</b><span class="dk-live d-inline-flex align-items-center">Live</span></div>
          <div class="dk-metrics row row-cols-3"><div class="col"><dl><dt>p95 read</dt><dd>38 ms</dd></dl></div><div class="col"><dl><dt>Uptime</dt><dd>99.99%</dd></dl></div><div class="col"><dl><dt>Regions</dt><dd>24</dd></dl></div></div>
          <svg class="dk-spark" viewBox="0 0 300 96" preserveAspectRatio="none" aria-hidden="true" focusable="false"><defs><linearGradient id="dkb-sp" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#a3e635" stop-opacity=".35"/><stop offset="1" stop-color="#a3e635" stop-opacity="0"/></linearGradient></defs><path d="M0 70 L25 64 50 68 75 52 100 58 125 40 150 46 175 30 200 36 225 22 250 28 275 18 300 24 V96 H0Z" fill="url(#dkb-sp)"/><path d="M0 70 L25 64 50 68 75 52 100 58 125 40 150 46 175 30 200 36 225 22 250 28 275 18 300 24" fill="none" stroke="#a3e635" stroke-width="2.5"/></svg>
          <ul class="dk-regions list-unstyled d-grid"><li class="d-flex justify-content-between">Frankfurt <span>fra1 · 21 ms</span></li><li class="d-flex justify-content-between">Singapore <span>sin1 · 34 ms</span></li><li class="d-flex justify-content-between">Virginia <span>iad1 · 29 ms</span></li></ul>
        </div>
      </div>
    </div>
  </div>
</section></div>
CSS
/* Dark heroes in Bootstrap's dark colour mode (data-bs-theme="dark"): .nav, .btn, .badge and the grid on mesh and
   spotlight gradients. Gradient headline text only uses stops that pass 4.5:1, with a solid colour fallback. */
.dk{--dk-bg:#07070c;--dk-text:#f4f4f8;--dk-muted:#b4b4c6;--dk-accent:#a78bfa;--dk-radius:28px;
  position:relative;isolation:isolate;overflow:hidden;border-radius:var(--dk-radius);background:var(--dk-bg);color:var(--dk-text)}
.dk a{color:inherit;text-decoration:none}
.dk :is(a,.btn):focus-visible{outline:3px solid var(--dk-accent);outline-offset:3px;border-radius:10px;box-shadow:none}
.dk-nav{gap:28px;padding:24px 36px}
.dk-logo{gap:10px;font-weight:800;font-size:1.06rem}
.dk-nav .nav{--bs-nav-link-padding-x:13px;--bs-nav-link-padding-y:2px;--bs-nav-link-font-size:.92rem;--bs-nav-link-color:var(--dk-muted);--bs-nav-link-hover-color:var(--dk-text)}
.dk-btn{--bs-btn-padding-x:24px;--bs-btn-font-weight:700;--bs-btn-border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;
  transition:background-color .2s,border-color .2s,box-shadow .2s}
.dk-btn.solid{--bs-btn-color:#0b0b12;--bs-btn-bg:#fff;--bs-btn-border-color:#fff;--bs-btn-hover-color:#0b0b12;--bs-btn-hover-bg:#fff;--bs-btn-hover-border-color:#fff;--bs-btn-active-color:#0b0b12;--bs-btn-active-bg:#fff;--bs-btn-active-border-color:#fff}
.dk-btn.solid:hover{box-shadow:0 0 0 4px rgba(167,139,250,.35)}
.dk-btn.glass{--bs-btn-color:var(--dk-text);--bs-btn-bg:rgba(255,255,255,.06);--bs-btn-border-color:rgba(255,255,255,.22);--bs-btn-hover-color:var(--dk-text);--bs-btn-hover-bg:rgba(255,255,255,.12);
  --bs-btn-hover-border-color:rgba(255,255,255,.35);--bs-btn-active-color:var(--dk-text);--bs-btn-active-bg:rgba(255,255,255,.12);--bs-btn-active-border-color:rgba(255,255,255,.35)}
.dk .dk-btn{color:var(--bs-btn-color)}
.dk-mesh::before{content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(40% 45% at 20% 25%,rgba(124,58,237,.55),transparent 70%),radial-gradient(35% 40% at 82% 18%,rgba(8,145,178,.45),transparent 70%),
  radial-gradient(45% 50% at 60% 85%,rgba(219,39,119,.32),transparent 70%),radial-gradient(30% 35% at 40% 60%,rgba(79,70,229,.35),transparent 70%)}
.dk-mesh::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent 55%,var(--dk-bg))}
.dk-mesh .dk-nav > a:last-child{font-size:.92rem;font-weight:600}
.dk-body{max-width:820px;padding:48px 24px 0}
.dk-pill{gap:10px;padding:6px 14px 6px 6px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);font-size:.86rem;color:#e4e4ee;backdrop-filter:blur(8px)}
.dk-pill .badge{--bs-badge-padding-x:10px;--bs-badge-padding-y:3px;--bs-badge-font-size:.76rem;background:#ede9fe;color:#4c1d95}
.dk-title{margin:26px 0 0;font-size:clamp(2.4rem,5.8vw,4.4rem);line-height:1.03;letter-spacing:-.04em;font-weight:800;color:var(--dk-text)}
.dk-grad{color:#ddd6fe;background:linear-gradient(92deg,#ddd6fe 0%,#a5f3fc 50%,#fbcfe8 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.dk-sub{max-width:600px;margin:22px auto 0;font-size:1.12rem;color:var(--dk-muted)}
.dk-ctas{gap:12px;margin-top:34px}
.dk-note{margin:18px 0 0;font-size:.86rem;color:var(--dk-muted)}
.dk-ask{max-width:720px;margin:52px auto -40px;padding:18px 18px 56px;border:1px solid rgba(255,255,255,.14);border-radius:20px 20px 0 0;
  background:linear-gradient(rgba(23,21,40,.9),rgba(12,11,22,.95));box-shadow:0 -20px 80px -20px rgba(124,58,237,.45)}
.dk-q{gap:12px;padding:12px 14px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.04);color:#e4e4ee}
.dk-q svg{flex:none;color:#c4b5fd}
.dk-q kbd{padding:2px 8px;border:1px solid rgba(255,255,255,.2);background:none;font-size:.74rem;font-weight:600;color:#c8c8d6}
.dk-a{margin:16px 0 0;padding:0 4px;color:#d6d6e2;font-size:.95rem}
.dk-a mark{background:rgba(167,139,250,.22);color:#f4f4f8;border-radius:4px;padding:0 3px}
.dk-cites{gap:8px;margin:14px 0 0;padding:0 4px}
.dk-cites li{padding:4px 10px;border:1px solid rgba(255,255,255,.16);border-radius:8px;font-size:.78rem;color:#c8c8d6}
.dk-kiln{--dk-bg:#050807;--dk-muted:#a9b5ad;--dk-accent:#a3e635}
.dk-kiln::before{content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(60% 70% at 0% 0%,rgba(163,230,53,.18),transparent 60%),
  linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px) 0 0/48px 48px,linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px) 0 0/48px 48px;
  mask-image:radial-gradient(90% 90% at 30% 20%,#000 40%,transparent)}
.dk-split{--bs-gutter-x:48px;--bs-gutter-y:0;row-gap:48px;margin:0;padding:36px 12px 60px}
.dk-tag{gap:8px;margin:0;font:600 .8rem var(--bs-font-monospace);color:var(--dk-accent)}
.dk-tag i{width:8px;height:8px;border-radius:2px;background:var(--dk-accent);box-shadow:0 0 12px var(--dk-accent)}
.dk-kiln .dk-title{font-size:clamp(2.3rem,5vw,3.8rem)}
.dk-kiln .dk-sub{margin:20px 0 0;max-width:500px}
.dk-kiln .dk-btn.solid{--bs-btn-color:#0b1405;--bs-btn-bg:var(--dk-accent);--bs-btn-border-color:var(--dk-accent);--bs-btn-hover-color:#0b1405;--bs-btn-hover-bg:var(--dk-accent);--bs-btn-hover-border-color:var(--dk-accent);--bs-btn-active-color:#0b1405;--bs-btn-active-bg:var(--dk-accent);--bs-btn-active-border-color:var(--dk-accent)}
.dk-kiln .dk-btn.solid:hover{box-shadow:0 0 0 4px rgba(163,230,53,.3)}
.dk-install{gap:12px;margin:26px 0 0;padding:10px 16px;border:1px dashed rgba(255,255,255,.22);border-radius:10px;font:500 .88rem var(--bs-font-monospace);color:#d9e2dc}
.dk-install span{color:var(--dk-accent)}
.dk-panel{--bs-card-bg:rgba(14,20,17,.85);--bs-card-border-color:rgba(255,255,255,.12);--bs-card-border-radius:20px;--bs-card-spacer-x:22px;--bs-card-spacer-y:22px;--bs-card-color:var(--dk-text);box-shadow:0 40px 80px -40px rgba(163,230,53,.35)}
.dk-panel-head{font-size:.86rem;color:var(--dk-muted)}
.dk-panel-head b{color:var(--dk-text);font-size:.95rem}
.dk-live{gap:6px;color:#bef264;font-weight:600}
.dk-live::before{content:"";width:7px;height:7px;border-radius:50%;background:#a3e635}
.dk-metrics{--bs-gutter-x:10px;margin-top:16px}
.dk-metrics dl{margin:0;padding:12px;border:1px solid rgba(255,255,255,.1);border-radius:12px}
.dk-metrics dt{font-size:.74rem;font-weight:400;color:var(--dk-muted)}
.dk-metrics dd{margin:0;font-size:1.35rem;font-weight:800;letter-spacing:-.02em}
.dk-spark{display:block;width:100%;height:96px;margin-top:14px}
.dk-regions{gap:8px;margin:14px 0 0;font-size:.84rem}
.dk-regions li{padding:8px 10px;border-radius:8px;background:rgba(255,255,255,.04)}
.dk-regions span{color:var(--dk-muted);font-family:var(--bs-font-monospace)}
@media (max-width:991.98px){
  .dk-nav{padding:20px 22px}
  .dk-body{padding-top:28px}
  .dk-btn{flex:1 1 100%}
  .dk-ask{margin:40px 14px -40px}
  .dk-split{--bs-gutter-x:0;padding:20px 22px 32px}
  .dk-install{font-size:.8rem}
  .dk-metrics{--bs-gutter-x:8px}
  .dk-metrics dl{padding:10px 8px}
  .dk-metrics dd{font-size:1rem;white-space:nowrap}
}
@media (prefers-reduced-motion:reduce){.dk *{transition:none!important}}

Tailwind 4 code

Requires: Tailwind CSS 4

HTML
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#9b9bb0] uppercase">Mesh gradient with gradient headline text</span>
<section class="relative isolate overflow-hidden rounded-[28px] bg-[#07070c] text-center leading-normal text-[#f4f4f8] before:absolute before:inset-0 before:-z-10 before:bg-[radial-gradient(40%_45%_at_20%_25%,rgba(124,58,237,.55),transparent_70%),radial-gradient(35%_40%_at_82%_18%,rgba(8,145,178,.45),transparent_70%),radial-gradient(45%_50%_at_60%_85%,rgba(219,39,119,.32),transparent_70%),radial-gradient(30%_35%_at_40%_60%,rgba(79,70,229,.35),transparent_70%)] before:content-[''] after:absolute after:inset-0 after:-z-10 after:bg-[linear-gradient(transparent_55%,#07070c)] after:content-['']" aria-labelledby="dk-nimbus-title">
  <nav class="flex items-center gap-7 px-[22px] py-5 lg:px-9 lg:py-6" aria-label="Nimbus">
    <a class="inline-flex items-center gap-2.5 rounded-[10px] text-[1.06rem] font-extrabold focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa]" href="#"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true" focusable="false"><defs><linearGradient id="dkt-g" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#c4b5fd"/><stop offset="1" stop-color="#67e8f9"/></linearGradient></defs><path d="M7 19a5 5 0 0 1 .6-10A7 7 0 0 1 21 11a4 4 0 0 1-1 8z" fill="url(#dkt-g)"/></svg>Nimbus</a>
    <ul class="mx-auto hidden gap-[26px] text-[.92rem] text-[#b4b4c6] lg:flex"><li><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa]" href="#">Product</a></li><li><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa]" href="#">Security</a></li><li><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa]" href="#">Pricing</a></li></ul>
    <a class="ml-auto rounded-[10px] text-[.92rem] font-semibold focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa] lg:ml-0" href="#">Sign in</a>
  </nav>
  <div class="mx-auto max-w-[820px] px-6 pt-7 lg:pt-12">
    <a class="inline-flex items-center gap-2.5 rounded-full border border-white/[.18] bg-white/[.06] py-1.5 pr-3.5 pl-1.5 text-[.86rem] text-[#e4e4ee] backdrop-blur-[8px] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa]" href="#"><b class="rounded-full bg-[#ede9fe] px-2.5 py-0.5 text-[.76rem] text-[#4c1d95]">New</b>Nimbus 4 reads your slides <span aria-hidden="true">→</span></a>
    <h1 class="mt-[26px] text-[clamp(2.4rem,5.8vw,4.4rem)] leading-[1.03] font-extrabold tracking-[-.04em]" id="dk-nimbus-title">Answers from <span class="bg-[linear-gradient(92deg,#ddd6fe_0%,#a5f3fc_50%,#fbcfe8_100%)] bg-clip-text text-[#ddd6fe] [-webkit-text-fill-color:transparent]">your own documents</span></h1>
    <p class="mx-auto mt-[22px] max-w-[600px] text-[1.12rem] text-[#b4b4c6]">Connect your drive, wiki and inbox. Nimbus answers questions in plain language and shows the page every sentence came from.</p>
    <div class="mt-[34px] flex flex-wrap justify-center gap-3"><a class="inline-flex min-h-[50px] items-center justify-center rounded-xl border border-white bg-white px-6 font-bold text-[#0b0b12] transition-shadow duration-200 hover:shadow-[0_0_0_4px_rgba(167,139,250,.35)] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa] motion-reduce:transition-none max-lg:flex-[1_1_100%]" href="#">Try it with your files</a><a class="inline-flex min-h-[50px] items-center justify-center rounded-xl border border-white/[.22] bg-white/[.06] px-6 font-bold transition-[color,background-color,border-color,text-decoration-color] duration-200 hover:border-white/[.35] hover:bg-white/[.12] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a78bfa] motion-reduce:transition-none max-lg:flex-[1_1_100%]" href="#">Watch a 3-minute demo</a></div>
    <p class="mt-[18px] text-[.86rem] text-[#b4b4c6]">SOC 2 Type II · Your data never trains our models</p>
  </div>
  <div class="mx-3.5 mt-10 -mb-10 max-w-[720px] rounded-t-[20px] border border-white/[.14] bg-[linear-gradient(rgba(23,21,40,.9),rgba(12,11,22,.95))] px-[18px] pt-[18px] pb-14 text-left shadow-[0_-20px_80px_-20px_rgba(124,58,237,.45)] lg:mx-auto lg:mt-[52px]" role="img" aria-label="Example: asked what changed in the refund policy since March, Nimbus answers that refunds now run 30 days instead of 14 and cites two documents">
    <div class="flex items-center gap-3 rounded-xl border border-white/[.14] bg-white/[.04] px-3.5 py-3 text-[#e4e4ee]"><svg class="flex-none text-[#c4b5fd]" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg><span class="flex-1">What changed in our refund policy since March?</span><kbd class="rounded-md border border-white/20 px-2 py-0.5 font-mono text-[.74rem] font-semibold text-[#c8c8d6]">⏎</kbd></div>
    <p class="mt-4 px-1 text-[.95rem] text-[#d6d6e2]">Refunds now run for <mark class="rounded bg-[rgba(167,139,250,.22)] px-[3px] text-[#f4f4f8]">30 days instead of 14</mark>, and digital orders can be refunded once without a reason. The change took effect on 2 June.</p>
    <ul class="mt-3.5 flex flex-wrap gap-2 px-1"><li class="rounded-lg border border-white/[.16] px-2.5 py-1 text-[.78rem] text-[#c8c8d6]">refund-policy-v3.pdf · p. 2</li><li class="rounded-lg border border-white/[.16] px-2.5 py-1 text-[.78rem] text-[#c8c8d6]">Support wiki · Refunds</li></ul>
  </div>
</section></div>

<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#9b9bb0] uppercase">Spotlight and grid lines with a live metrics panel</span>
<section class="relative isolate overflow-hidden rounded-[28px] bg-[#050807] leading-normal text-[#f4f4f8] before:absolute before:inset-0 before:-z-10 before:[background:radial-gradient(60%_70%_at_0%_0%,rgba(163,230,53,.18),transparent_60%),linear-gradient(rgba(255,255,255,.05)_1px,transparent_1px)_0_0/48px_48px,linear-gradient(90deg,rgba(255,255,255,.05)_1px,transparent_1px)_0_0/48px_48px] before:[mask-image:radial-gradient(90%_90%_at_30%_20%,#000_40%,transparent)] before:content-['']" aria-labelledby="dk-kiln-title">
  <nav class="flex items-center gap-7 px-[22px] py-5 lg:px-9 lg:py-6" aria-label="Kiln">
    <a class="inline-flex items-center gap-2.5 rounded-[10px] text-[1.06rem] font-extrabold focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635]" href="#"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true" focusable="false"><rect x="2" y="2" width="22" height="22" rx="6" fill="#a3e635"/><path d="M9 7v12M9 13l7-6M11 12l6 7" stroke="#0b1405" stroke-width="2.6" stroke-linecap="round" fill="none"/></svg>Kiln</a>
    <ul class="ml-auto flex gap-[26px] text-[.92rem] text-[#a9b5ad]"><li class="hidden lg:block"><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635]" href="#">Docs</a></li><li class="hidden lg:block"><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635]" href="#">Regions</a></li><li class="hidden lg:block"><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635]" href="#">Pricing</a></li><li><a class="rounded-[10px] hover:text-[#f4f4f8] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635]" href="#">Sign in</a></li></ul>
  </nav>
  <div class="grid grid-cols-1 items-center gap-12 px-[22px] pt-5 pb-8 lg:grid-cols-2 lg:px-9 lg:pt-9 lg:pb-[60px]">
    <div>
      <p class="inline-flex items-center gap-2 font-mono text-[.8rem] font-semibold text-[#a3e635]"><i class="size-2 rounded-[2px] bg-[#a3e635] shadow-[0_0_12px_#a3e635]" aria-hidden="true"></i>Postgres at the edge</p>
      <h2 class="mt-[26px] text-[clamp(2.3rem,5vw,3.8rem)] leading-[1.03] font-extrabold tracking-[-.04em]" id="dk-kiln-title">Reads in 38 ms from anywhere on earth</h2>
      <p class="mt-5 max-w-[500px] text-[1.12rem] text-[#a9b5ad]">Kiln replicates your database to 24 regions and routes every query to the closest copy, with writes that stay strongly consistent.</p>
      <div class="mt-[34px] flex flex-wrap gap-3"><a class="inline-flex min-h-[50px] items-center justify-center rounded-xl border border-[#a3e635] bg-[#a3e635] px-6 font-bold text-[#0b1405] transition-shadow duration-200 hover:shadow-[0_0_0_4px_rgba(163,230,53,.3)] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635] motion-reduce:transition-none max-lg:flex-[1_1_100%]" href="#">Start building free</a><a class="inline-flex min-h-[50px] items-center justify-center rounded-xl border border-white/[.22] bg-white/[.06] px-6 font-bold transition-[color,background-color,border-color,text-decoration-color] duration-200 hover:border-white/[.35] hover:bg-white/[.12] focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#a3e635] motion-reduce:transition-none max-lg:flex-[1_1_100%]" href="#">Talk to an engineer</a></div>
      <p class="mt-[26px] flex items-center gap-3 rounded-[10px] border border-dashed border-white/[.22] px-4 py-2.5 font-mono text-[.8rem] font-medium text-[#d9e2dc] lg:inline-flex lg:text-[.88rem]"><span class="text-[#a3e635]" aria-hidden="true">$</span>npm install @kiln/client</p>
    </div>
    <div class="rounded-[20px] border border-white/[.12] bg-[rgba(14,20,17,.85)] p-[22px] shadow-[0_40px_80px_-40px_rgba(163,230,53,.35)]" role="img" aria-label="Kiln dashboard: p95 read latency 38 milliseconds, 99.99 percent uptime, 24 regions, with Frankfurt, Singapore and Virginia all healthy">
      <div class="flex items-center justify-between text-[.86rem] text-[#a9b5ad]"><b class="text-[.95rem] text-[#f4f4f8]">shop-prod</b><span class="inline-flex items-center gap-1.5 font-semibold text-[#bef264] before:size-[7px] before:rounded-full before:bg-[#a3e635] before:content-['']">Live</span></div>
      <dl class="mt-4 grid grid-cols-3 gap-2 lg:gap-2.5"><div class="rounded-xl border border-white/10 p-2.5 lg:p-3"><dt class="text-[.74rem] text-[#a9b5ad]">p95 read</dt><dd class="text-[1.05rem] font-extrabold tracking-[-.02em] lg:text-[1.35rem]">38 ms</dd></div><div class="rounded-xl border border-white/10 p-2.5 lg:p-3"><dt class="text-[.74rem] text-[#a9b5ad]">Uptime</dt><dd class="text-[1.05rem] font-extrabold tracking-[-.02em] lg:text-[1.35rem]">99.99%</dd></div><div class="rounded-xl border border-white/10 p-2.5 lg:p-3"><dt class="text-[.74rem] text-[#a9b5ad]">Regions</dt><dd class="text-[1.05rem] font-extrabold tracking-[-.02em] lg:text-[1.35rem]">24</dd></div></dl>
      <svg class="mt-3.5 block h-24 w-full" viewBox="0 0 300 96" preserveAspectRatio="none" aria-hidden="true" focusable="false"><defs><linearGradient id="dkt-sp" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#a3e635" stop-opacity=".35"/><stop offset="1" stop-color="#a3e635" stop-opacity="0"/></linearGradient></defs><path d="M0 70 L25 64 50 68 75 52 100 58 125 40 150 46 175 30 200 36 225 22 250 28 275 18 300 24 V96 H0Z" fill="url(#dkt-sp)"/><path d="M0 70 L25 64 50 68 75 52 100 58 125 40 150 46 175 30 200 36 225 22 250 28 275 18 300 24" fill="none" stroke="#a3e635" stroke-width="2.5"/></svg>
      <ul class="mt-3.5 grid gap-2 text-[.84rem]"><li class="flex justify-between rounded-lg bg-white/[.04] px-2.5 py-2">Frankfurt <span class="font-mono text-[#a9b5ad]">fra1 · 21 ms</span></li><li class="flex justify-between rounded-lg bg-white/[.04] px-2.5 py-2">Singapore <span class="font-mono text-[#a9b5ad]">sin1 · 34 ms</span></li><li class="flex justify-between rounded-lg bg-white/[.04] px-2.5 py-2">Virginia <span class="font-mono text-[#a9b5ad]">iad1 · 29 ms</span></li></ul>
    </div>
  </div>
</section></div>

About this set

Two dark heroes that get their depth from layered gradients rather than images. Mesh gradient hero is an AI assistant: four soft radial gradients in violet, cyan, pink and indigo sit behind a centred nav, an announcement pill, a headline with gradient text on its key phrase, two buttons, a trust line and an answer card that shows a question, an answer with a highlighted phrase and two source chips. Spotlight and grid hero is an edge database: a faint grid of lines fades out from a green spotlight in the corner, with the copy, two buttons and an install command on the left and a live metrics panel on the right holding three figures, a sparkline and three regions. On a near-black ground, light-theme colours turn muddy, so every colour here was checked against the lightest part of the gradient it sits on. The gradient headline only uses pale stops and has a solid fallback colour for browsers without background-clip: text. The Bootstrap version runs in Bootstrap’s dark colour mode with data-bs-theme=”dark”.

What’s included

  • Mesh background from layered radial gradients, no images
  • Gradient headline text with a solid colour fallback
  • Grid lines masked into a spotlight
  • Answer card and metrics panel described as images
  • Bootstrap version in data-bs-theme="dark"

Accessibility

Text colours were measured against the rendered gradients at desktop and phone widths and stay above 4.5:1. The answer card and metrics panel each have role="img" with a description, decorative icons are hidden from screen readers, and links show a 3px focus outline in the accent colour. Button transitions stop under prefers-reduced-motion.

Customise it

Change --dk-bg, --dk-muted and --dk-accent on .dk, and the four radial-gradient colours in .dk-mesh::before. In Tailwind the mesh is one arbitrary before:bg-[...] value, and the gradient text stops are in the bg-[linear-gradient(...)] class.