Open demo

CSS code

HTML
<div class="duo">
<div><span class="lbl">Gradient ring card</span>
<article class="dk dk-ring" aria-labelledby="dk-mira">
  <span class="dk-av" aria-hidden="true"><span></span></span>
  <h3 class="dk-name" id="dk-mira">Mira Solberg</h3>
  <p class="dk-handle">Indie game developer · @mirasolberg</p>
  <p class="dk-status"><i aria-hidden="true"></i>Open to contract work</p>
  <ul class="dk-tags" aria-label="Skills"><li>Godot</li><li>Shaders</li><li>Pixel art</li><li>Level design</li></ul>
  <dl class="dk-stats">
    <div><dt>games shipped</dt><dd>7</dd></div>
    <div><dt>players</dt><dd>310k</dd></div>
    <div><dt>jams won</dt><dd>4</dd></div>
  </dl>
  <div class="dk-actions">
    <a class="dk-btn grad" href="#">Hire Mira</a>
    <a class="dk-btn" href="#">Portfolio<span class="sr-only"> of Mira Solberg</span></a>
  </div>
</article></div>

<div><span class="lbl">Developer card with contribution graph</span>
<article class="dk dk-dev" aria-labelledby="dk-jonah">
  <div class="dk-top">
    <span class="dk-ini" aria-hidden="true">JR</span>
    <div class="dk-who"><h3 class="dk-name" id="dk-jonah">Jonah Reyes</h3><p class="dk-handle">@jreyes · maintainer of tidewave</p></div>
    <a class="dk-btn" href="#"><svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false" width="16" height="16"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>Follow<span class="sr-only"> Jonah Reyes on GitHub</span></a>
  </div>
  <dl class="dk-row">
    <div><dt>repositories</dt><dd>48</dd></div>
    <div><dt>stars</dt><dd>12.4k</dd></div>
    <div><dt>followers</dt><dd>2,310</dd></div>
    <div><dt>sponsors</dt><dd>36</dd></div>
  </dl>
  <div class="dk-graph">
    <p><span><b>1,284</b> contributions in the last 20 weeks</span><span>Busiest on Tuesdays</span></p>
    <div class="dk-cells" role="img" aria-label="Contribution graph: 1,284 contributions in the last 20 weeks, rising towards this week, busiest on Tuesdays"><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l3"></i><i class="l1"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l3"></i><i class="l4"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l2"></i><i class="l3"></i><i class="l4"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l4"></i><i class="l4"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l3"></i><i class="l1"></i><i class="l1"></i><i class="l4"></i><i class="l4"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l3"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l4"></i><i class="l4"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i></div>
    <div class="dk-key" aria-hidden="true">Less<span></span><i></i><i class="l1"></i><i class="l2"></i><i class="l3"></i><i class="l4"></i><span></span>More</div>
  </div>
  <ul class="dk-pins" aria-label="Pinned repositories">
    <li><a href="#">tidewave</a><p>Streaming CSV parser that keeps memory flat on 40 GB files.</p><small><i class="rs" aria-hidden="true"></i>Rust · 9.8k stars</small></li>
    <li><a href="#">quiet-forms</a><p>Form validation that announces errors once, in the right place.</p><small><i aria-hidden="true"></i>TypeScript · 1.9k stars</small></li>
  </ul>
</article></div>
</div>
CSS
/* Dark profile cards: a gradient-ring avatar card, and a developer card with a contribution graph drawn from <i> cells
   (one accessible label describes the whole graph). Colours are checked for contrast on the near-black card. */
.dk{--dk-card:#12161f;--dk-line:#232a38;--dk-ink:#e8ebf2;--dk-muted:#9aa3b5;--dk-cyan:#22d3ee;--dk-violet:#a78bfa;--dk-chip:#1b2130;
  position:relative;background:var(--dk-card);color:var(--dk-ink);border:1px solid var(--dk-line);border-radius:22px;box-shadow:0 30px 60px -30px rgba(0,0,0,.8)}
.dk :where(h3,p,ul,dl,dd){margin:0;padding:0}
/* gradient ring card */
.dk-ring{padding:30px 26px 26px;text-align:center;overflow:hidden}
.dk-ring::before{content:"";position:absolute;inset:0 0 auto;height:160px;background:radial-gradient(60% 100% at 50% 0,rgba(34,211,238,.18),transparent 70%);pointer-events:none}
.dk-av{position:relative;display:block;width:108px;height:108px;margin:0 auto;padding:4px;border-radius:50%;background:conic-gradient(from 140deg,var(--dk-cyan),var(--dk-violet),#f472b6,var(--dk-cyan))}
.dk-av span{display:block;width:100%;height:100%;border:4px solid var(--dk-card);border-radius:50%;
  background:radial-gradient(circle at 30% 28%,#fef3c7 0,transparent 30%),radial-gradient(circle at 70% 75%,#f472b6 0,transparent 45%),linear-gradient(140deg,#0e7490,#6d28d9)}
.dk-name{position:relative;margin-top:16px;font-size:1.3rem;font-weight:800;letter-spacing:-.01em}
.dk-handle{margin-top:2px;font-size:.9rem;color:var(--dk-muted)}
.dk-status{display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:5px 12px;border:1px solid rgba(74,222,128,.35);border-radius:999px;background:rgba(74,222,128,.08);color:#86efac;font-size:.8rem;font-weight:600}
.dk-status i{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px rgba(74,222,128,.2)}
.dk-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;list-style:none;margin-top:16px}
.dk-tags li{padding:4px 10px;border-radius:8px;background:var(--dk-chip);color:#c9d1df;font-size:.78rem;font-weight:600}
.dk-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px}
.dk-stats div{display:flex;flex-direction:column-reverse;gap:2px;padding:12px 6px;border-radius:14px;background:var(--dk-chip)}
.dk-stats dd{font-size:1.15rem;font-weight:800;font-variant-numeric:tabular-nums}
.dk-stats dt{font-size:.72rem;color:var(--dk-muted)}
.dk-actions{display:flex;gap:10px;margin-top:20px}
.dk-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 14px;border:1.5px solid #4b5568;border-radius:12px;background:transparent;color:var(--dk-ink);
  font:inherit;font-size:.9rem;font-weight:700;line-height:1.2;text-decoration:none;cursor:pointer;transition:background-color .2s,border-color .2s,filter .2s}
.dk-btn:hover{background:#1b2130;border-color:#6b7690}
.dk-btn.grad{border-color:transparent;background:linear-gradient(120deg,var(--dk-cyan),var(--dk-violet));color:#0a0c11}
.dk-btn.grad:hover{filter:brightness(1.1)}
.dk-btn:focus-visible,.dk a:focus-visible{outline:3px solid var(--dk-cyan);outline-offset:3px}
/* developer card */
.dk-dev{padding:24px}
.dk-top{display:flex;align-items:center;gap:14px}
.dk-ini{display:grid;place-items:center;flex:none;width:56px;height:56px;border-radius:16px;background:linear-gradient(140deg,#0e7490,#1e3a8a);color:#fff;font-weight:800}
.dk-who{flex:1;min-width:0}
.dk-who .dk-name{margin-top:0;font-size:1.15rem}
.dk-who .dk-handle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dk-dev .dk-btn{flex:none;padding:9px 14px}
.dk-row{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:18px;font-size:.88rem;color:var(--dk-muted)}
.dk-row div{display:flex;flex-direction:row-reverse;gap:5px}
.dk-row dd{color:var(--dk-ink);font-weight:800}
.dk-graph{margin-top:20px;padding:16px;border-radius:16px;background:#0e121a;border:1px solid var(--dk-line)}
.dk-graph p{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.82rem;color:var(--dk-muted)}
.dk-graph p b{color:var(--dk-ink)}
.dk-cells{display:grid;grid-template-rows:repeat(7,auto);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin-top:12px}
.dk-cells i,.dk-key i{display:block;aspect-ratio:1;border-radius:3px;background:#1b2130}
.dk-cells .l1,.dk-key .l1{background:#0e4d5c}.dk-cells .l2,.dk-key .l2{background:#0f7285}.dk-cells .l3,.dk-key .l3{background:#16a3b8}.dk-cells .l4,.dk-key .l4{background:var(--dk-cyan)}
.dk-key{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin-top:10px;font-size:.75rem;color:var(--dk-muted)}
.dk-key i{width:11px}
.dk-key span{margin:0 4px}
.dk-pins{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px;list-style:none;margin-top:16px}
.dk-pins li{padding:14px;border:1px solid var(--dk-line);border-radius:14px}
.dk-pins a{color:var(--dk-cyan);font-weight:700;text-decoration:none;border-radius:4px}
.dk-pins a:hover{text-decoration:underline;text-underline-offset:3px}
.dk-pins p{margin-top:6px;font-size:.84rem;line-height:1.45;color:var(--dk-muted)}
.dk-pins small{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:.78rem;color:var(--dk-muted)}
.dk-pins small i{width:9px;height:9px;border-radius:50%;background:#3178c6}
.dk-pins small i.rs{background:#dea584}
.dk .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (max-width:480px){.dk-top{flex-wrap:wrap}.dk-dev .dk-btn{flex:1 1 100%}}
@media (prefers-reduced-motion:reduce){.dk-btn{transition:none}}

Bootstrap 5 code

Requires: Bootstrap 5.3.8 CSS

HTML
<div class="duo">
<div><span class="lbl">Gradient ring card</span>
<article class="card dk dk-ring" aria-labelledby="dk-mira">
  <span class="dk-av" aria-hidden="true"><span></span></span>
  <h3 class="dk-name" id="dk-mira">Mira Solberg</h3>
  <p class="dk-handle">Indie game developer · @mirasolberg</p>
  <p class="dk-status"><i aria-hidden="true"></i>Open to contract work</p>
  <ul class="dk-tags list-unstyled" aria-label="Skills"><li class="badge">Godot</li><li class="badge">Shaders</li><li class="badge">Pixel art</li><li class="badge">Level design</li></ul>
  <dl class="dk-stats d-grid gap-2">
    <div><dt>games shipped</dt><dd>7</dd></div>
    <div><dt>players</dt><dd>310k</dd></div>
    <div><dt>jams won</dt><dd>4</dd></div>
  </dl>
  <div class="dk-actions">
    <a class="btn btn-grad" href="#">Hire Mira</a>
    <a class="btn btn-outline-secondary" href="#">Portfolio<span class="visually-hidden"> of Mira Solberg</span></a>
  </div>
</article></div>

<div><span class="lbl">Developer card with contribution graph</span>
<article class="card dk dk-dev" aria-labelledby="dk-jonah">
  <div class="dk-top">
    <span class="dk-ini" aria-hidden="true">JR</span>
    <div class="dk-who"><h3 class="dk-name" id="dk-jonah">Jonah Reyes</h3><p class="dk-handle">@jreyes · maintainer of tidewave</p></div>
    <a class="btn btn-outline-secondary" href="#"><svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false" width="16" height="16"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>Follow<span class="visually-hidden"> Jonah Reyes on GitHub</span></a>
  </div>
  <dl class="dk-row">
    <div><dt>repositories</dt><dd>48</dd></div>
    <div><dt>stars</dt><dd>12.4k</dd></div>
    <div><dt>followers</dt><dd>2,310</dd></div>
    <div><dt>sponsors</dt><dd>36</dd></div>
  </dl>
  <div class="dk-graph">
    <p><span><b>1,284</b> contributions in the last 20 weeks</span><span>Busiest on Tuesdays</span></p>
    <div class="dk-cells" role="img" aria-label="Contribution graph: 1,284 contributions in the last 20 weeks, rising towards this week, busiest on Tuesdays"><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l3"></i><i class="l1"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l0"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l3"></i><i class="l4"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l1"></i><i class="l0"></i><i class="l2"></i><i class="l3"></i><i class="l4"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l1"></i><i class="l4"></i><i class="l4"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l1"></i><i class="l0"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l3"></i><i class="l1"></i><i class="l1"></i><i class="l4"></i><i class="l4"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l2"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l3"></i><i class="l1"></i><i class="l0"></i><i class="l0"></i><i class="l3"></i><i class="l3"></i><i class="l2"></i><i class="l1"></i><i class="l2"></i><i class="l0"></i><i class="l1"></i><i class="l2"></i><i class="l4"></i><i class="l4"></i><i class="l2"></i><i class="l2"></i><i class="l1"></i></div>
    <div class="dk-key" aria-hidden="true">Less<span></span><i></i><i class="l1"></i><i class="l2"></i><i class="l3"></i><i class="l4"></i><span></span>More</div>
  </div>
  <ul class="dk-pins list-unstyled" aria-label="Pinned repositories">
    <li class="card"><a href="#">tidewave</a><p>Streaming CSV parser that keeps memory flat on 40 GB files.</p><small><i class="rs" aria-hidden="true"></i>Rust · 9.8k stars</small></li>
    <li class="card"><a href="#">quiet-forms</a><p>Form validation that announces errors once, in the right place.</p><small><i aria-hidden="true"></i>TypeScript · 1.9k stars</small></li>
  </ul>
</article></div>
</div>
CSS
/* Dark profile cards on Bootstrap .card, .badge, .btn and the grid, in data-bs-theme="dark": a gradient-ring avatar card, and a developer card with a contribution graph drawn from <i> cells
   (one accessible label describes the whole graph). Colours are checked for contrast on the near-black card. */
.dk{--dk-card:#12161f;--dk-line:#232a38;--dk-ink:#e8ebf2;--dk-muted:#9aa3b5;--dk-cyan:#22d3ee;--dk-violet:#a78bfa;--dk-chip:#1b2130;
  --bs-card-bg:var(--dk-card);--bs-card-border-color:var(--dk-line);--bs-card-border-radius:22px;--bs-card-inner-border-radius:21px;color:var(--dk-ink);box-shadow:0 30px 60px -30px rgba(0,0,0,.8)}
.dk :where(h3,p,ul,dl,dd,dt){margin:0}
.dk ul{padding:0}
/* gradient ring card */
.dk-ring{padding:30px 26px 26px;text-align:center;overflow:hidden}
.dk-ring::before{content:"";position:absolute;inset:0 0 auto;height:160px;background:radial-gradient(60% 100% at 50% 0,rgba(34,211,238,.18),transparent 70%);pointer-events:none}
.dk-av{position:relative;display:block;width:108px;height:108px;margin:0 auto;padding:4px;border-radius:50%;background:conic-gradient(from 140deg,var(--dk-cyan),var(--dk-violet),#f472b6,var(--dk-cyan))}
.dk-av span{display:block;width:100%;height:100%;border:4px solid var(--dk-card);border-radius:50%;
  background:radial-gradient(circle at 30% 28%,#fef3c7 0,transparent 30%),radial-gradient(circle at 70% 75%,#f472b6 0,transparent 45%),linear-gradient(140deg,#0e7490,#6d28d9)}
.dk .dk-name{position:relative;margin-top:16px;line-height:normal;font-size:1.3rem;font-weight:800;letter-spacing:-.01em}
.dk-handle{margin-top:2px;font-size:.9rem;color:var(--dk-muted)}
.dk-status{align-self:center;display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:5px 12px;border:1px solid rgba(74,222,128,.35);border-radius:999px;background:rgba(74,222,128,.08);color:#86efac;font-size:.8rem;font-weight:600}
.dk-status i{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px rgba(74,222,128,.2)}
.dk-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;list-style:none;margin-top:16px}
.dk-tags .badge{--bs-badge-padding-x:10px;--bs-badge-padding-y:4px;--bs-badge-font-size:.78rem;--bs-badge-font-weight:600;--bs-badge-color:#c9d1df;--bs-badge-border-radius:8px;background:var(--dk-chip);line-height:normal}
.dk-stats{grid-template-columns:repeat(3,1fr);margin-top:20px}
.dk-stats>div{display:flex;flex-direction:column-reverse;gap:2px;padding:12px 6px;border-radius:14px;background:var(--dk-chip)}
.dk-stats dd{font-size:1.15rem;font-weight:800;font-variant-numeric:tabular-nums}
.dk-stats dt,.dk-row dt{font-size:.72rem;font-weight:400;color:var(--dk-muted)}
.dk-actions{display:flex;gap:10px;margin-top:20px}
.dk .btn{--bs-btn-padding-x:14px;--bs-btn-padding-y:11px;--bs-btn-font-size:.9rem;--bs-btn-font-weight:700;--bs-btn-line-height:1.2;--bs-btn-border-width:1.5px;--bs-btn-border-radius:12px;--bs-btn-focus-box-shadow:none;
  flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background-color .2s,border-color .2s,filter .2s}
.dk .btn-outline-secondary{--bs-btn-color:var(--dk-ink);--bs-btn-border-color:#4b5568;--bs-btn-hover-color:var(--dk-ink);--bs-btn-hover-bg:#1b2130;--bs-btn-hover-border-color:#6b7690;--bs-btn-active-color:var(--dk-ink);--bs-btn-active-bg:#232a38;--bs-btn-active-border-color:#6b7690}
.dk .btn-grad{--bs-btn-color:#0a0c11;--bs-btn-hover-color:#0a0c11;--bs-btn-active-color:#0a0c11;--bs-btn-border-color:transparent;--bs-btn-hover-border-color:transparent;background:linear-gradient(120deg,var(--dk-cyan),var(--dk-violet))}
.dk .btn-grad:hover{filter:brightness(1.1)}
.dk .btn:focus-visible,.dk a:focus-visible{outline:3px solid var(--dk-cyan);outline-offset:3px}
/* developer card */
.dk-dev{padding:24px}
.dk-top{display:flex;align-items:center;gap:14px}
.dk-ini{display:grid;place-items:center;flex:none;width:56px;height:56px;border-radius:16px;background:linear-gradient(140deg,#0e7490,#1e3a8a);color:#fff;font-weight:800}
.dk-who{flex:1;min-width:0}
.dk-who .dk-name{margin-top:0 !important;font-size:1.15rem}
.dk-who .dk-handle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dk-dev .dk-top .btn{--bs-btn-padding-y:9px;flex:none}
.dk-row{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:18px;font-size:.88rem;color:var(--dk-muted)}
.dk-row div{display:flex;flex-direction:row-reverse;gap:5px}
.dk-row dt{font-size:inherit}
.dk-row dd{color:var(--dk-ink);font-weight:800}
.dk-graph{margin-top:20px;padding:16px;border-radius:16px;background:#0e121a;border:1px solid var(--dk-line)}
.dk-graph p{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.82rem;color:var(--dk-muted)}
.dk-graph p b{color:var(--dk-ink)}
.dk-cells{display:grid;grid-template-rows:repeat(7,auto);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin-top:12px}
.dk-cells i,.dk-key i{display:block;aspect-ratio:1;border-radius:3px;background:#1b2130}
.dk-cells .l1,.dk-key .l1{background:#0e4d5c}.dk-cells .l2,.dk-key .l2{background:#0f7285}.dk-cells .l3,.dk-key .l3{background:#16a3b8}.dk-cells .l4,.dk-key .l4{background:var(--dk-cyan)}
.dk-key{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin-top:10px;font-size:.75rem;color:var(--dk-muted)}
.dk-key i{width:11px}
.dk-key span{margin:0 4px}
.dk-pins{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px;list-style:none;margin-top:16px}
.dk-pins .card{--bs-card-bg:transparent;--bs-card-border-color:var(--dk-line);--bs-card-border-radius:14px;padding:14px;color:var(--dk-ink)}
.dk-pins a{color:var(--dk-cyan);align-self:flex-start;font-weight:700;text-decoration:none;border-radius:4px}
.dk-pins a:hover{text-decoration:underline;text-underline-offset:3px}
.dk-pins p{margin-top:6px;font-size:.84rem;line-height:1.45;color:var(--dk-muted)}
.dk-pins small{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:.78rem;color:var(--dk-muted)}
.dk-pins small i{width:9px;height:9px;border-radius:50%;background:#3178c6}
.dk-pins small i.rs{background:#dea584}
@media (max-width:480px){.dk-top{flex-wrap:wrap}.dk-dev .dk-top .btn{flex:1 1 100%}}
@media (prefers-reduced-motion:reduce){.dk .btn{transition:none}}

Tailwind 4 code

Requires: Tailwind CSS 4

HTML
<div class="flex flex-wrap items-start gap-x-7 gap-y-14">
<div class="max-w-[400px] min-w-0 flex-[1_1_320px]"><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#9aa3b5] uppercase">Gradient ring card</span>
<article class="relative rounded-[22px] border border-[#232a38] bg-[#12161f] text-[#e8ebf2] shadow-[0_30px_60px_-30px_rgba(0,0,0,.8)] overflow-hidden px-[26px] pt-[30px] pb-[26px] text-center before:pointer-events-none before:absolute before:inset-x-0 before:top-0 before:h-40 before:bg-[radial-gradient(60%_100%_at_50%_0,rgba(34,211,238,.18),transparent_70%)]" aria-labelledby="dk-mira">
  <span class="relative mx-auto block size-[108px] rounded-full bg-[conic-gradient(from_140deg,#22d3ee,#a78bfa,#f472b6,#22d3ee)] p-1" aria-hidden="true"><span class="block size-full rounded-full border-4 border-[#12161f] bg-[radial-gradient(circle_at_30%_28%,#fef3c7_0,transparent_30%),radial-gradient(circle_at_70%_75%,#f472b6_0,transparent_45%),linear-gradient(140deg,#0e7490,#6d28d9)]"></span></span>
  <h3 class="relative mt-4 text-[1.3rem] font-extrabold tracking-[-.01em]" id="dk-mira">Mira Solberg</h3>
  <p class="mt-0.5 text-[.9rem] text-[#9aa3b5]">Indie game developer · @mirasolberg</p>
  <p class="mt-3.5 inline-flex items-center gap-[7px] rounded-full border border-[rgba(74,222,128,.35)] bg-[rgba(74,222,128,.08)] px-3 py-[5px] text-[.8rem] font-semibold text-[#86efac]"><i class="size-2 rounded-full bg-[#4ade80] shadow-[0_0_0_3px_rgba(74,222,128,.2)]" aria-hidden="true"></i>Open to contract work</p>
  <ul class="mt-4 flex flex-wrap justify-center gap-1.5" aria-label="Skills"><li class="rounded-lg bg-[#1b2130] px-2.5 py-1 text-[.78rem] font-semibold text-[#c9d1df]">Godot</li><li class="rounded-lg bg-[#1b2130] px-2.5 py-1 text-[.78rem] font-semibold text-[#c9d1df]">Shaders</li><li class="rounded-lg bg-[#1b2130] px-2.5 py-1 text-[.78rem] font-semibold text-[#c9d1df]">Pixel art</li><li class="rounded-lg bg-[#1b2130] px-2.5 py-1 text-[.78rem] font-semibold text-[#c9d1df]">Level design</li></ul>
  <dl class="mt-5 grid grid-cols-3 gap-2">
    <div class="flex flex-col-reverse gap-0.5 rounded-[14px] bg-[#1b2130] px-1.5 py-3"><dt class="text-[.72rem] text-[#9aa3b5]">games shipped</dt><dd class="text-[1.15rem] font-extrabold tabular-nums">7</dd></div>
    <div class="flex flex-col-reverse gap-0.5 rounded-[14px] bg-[#1b2130] px-1.5 py-3"><dt class="text-[.72rem] text-[#9aa3b5]">players</dt><dd class="text-[1.15rem] font-extrabold tabular-nums">310k</dd></div>
    <div class="flex flex-col-reverse gap-0.5 rounded-[14px] bg-[#1b2130] px-1.5 py-3"><dt class="text-[.72rem] text-[#9aa3b5]">jams won</dt><dd class="text-[1.15rem] font-extrabold tabular-nums">4</dd></div>
  </dl>
  <div class="mt-5 flex gap-2.5">
    <a class="inline-flex flex-1 items-center justify-center gap-2 rounded-xl border-[1.5px] px-3.5 py-[11px] text-[.9rem] leading-[1.2] font-bold no-underline transition-[background-color,border-color,filter] duration-200 focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#22d3ee] motion-reduce:transition-none border-transparent bg-[linear-gradient(120deg,#22d3ee,#a78bfa)] text-[#0a0c11] hover:brightness-110" href="#">Hire Mira</a>
    <a class="inline-flex flex-1 items-center justify-center gap-2 rounded-xl border-[1.5px] px-3.5 py-[11px] text-[.9rem] leading-[1.2] font-bold no-underline transition-[background-color,border-color,filter] duration-200 focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#22d3ee] motion-reduce:transition-none border-[#4b5568] text-[#e8ebf2] hover:border-[#6b7690] hover:bg-[#1b2130]" href="#">Portfolio<span class="sr-only"> of Mira Solberg</span></a>
  </div>
</article></div>

<div class="min-w-0 flex-[1_1_520px]"><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#9aa3b5] uppercase">Developer card with contribution graph</span>
<article class="relative rounded-[22px] border border-[#232a38] bg-[#12161f] text-[#e8ebf2] shadow-[0_30px_60px_-30px_rgba(0,0,0,.8)] p-6" aria-labelledby="dk-jonah">
  <div class="flex items-center gap-3.5 max-[480px]:flex-wrap">
    <span class="grid size-14 flex-none place-items-center rounded-2xl bg-[linear-gradient(140deg,#0e7490,#1e3a8a)] font-extrabold text-white" aria-hidden="true">JR</span>
    <div class="min-w-0 flex-1"><h3 class="text-[1.15rem] font-extrabold tracking-[-.01em]" id="dk-jonah">Jonah Reyes</h3><p class="mt-0.5 truncate text-[.9rem] text-[#9aa3b5]">@jreyes · maintainer of tidewave</p></div>
    <a class="inline-flex flex-none items-center justify-center gap-2 rounded-xl border-[1.5px] px-3.5 py-[9px] text-[.9rem] leading-[1.2] font-bold no-underline transition-[background-color,border-color,filter] duration-200 focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#22d3ee] motion-reduce:transition-none border-[#4b5568] text-[#e8ebf2] hover:border-[#6b7690] hover:bg-[#1b2130] max-[480px]:flex-[1_1_100%]" href="#"><svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false" width="16" height="16"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>Follow<span class="sr-only"> Jonah Reyes on GitHub</span></a>
  </div>
  <dl class="mt-[18px] flex flex-wrap gap-x-[22px] gap-y-1.5 text-[.88rem] text-[#9aa3b5]">
    <div class="flex flex-row-reverse gap-[5px]"><dt>repositories</dt><dd class="font-extrabold text-[#e8ebf2]">48</dd></div><div class="flex flex-row-reverse gap-[5px]"><dt>stars</dt><dd class="font-extrabold text-[#e8ebf2]">12.4k</dd></div><div class="flex flex-row-reverse gap-[5px]"><dt>followers</dt><dd class="font-extrabold text-[#e8ebf2]">2,310</dd></div><div class="flex flex-row-reverse gap-[5px]"><dt>sponsors</dt><dd class="font-extrabold text-[#e8ebf2]">36</dd></div>
  </dl>
  <div class="mt-5 rounded-2xl border border-[#232a38] bg-[#0e121a] p-4">
    <p class="flex flex-wrap justify-between gap-2.5 text-[.82rem] text-[#9aa3b5]"><span><b class="text-[#e8ebf2]">1,284</b> contributions in the last 20 weeks</span><span>Busiest on Tuesdays</span></p>
    <div class="mt-3 grid auto-cols-fr grid-flow-col grid-rows-[repeat(7,auto)] gap-[3px]" role="img" aria-label="Contribution graph: 1,284 contributions in the last 20 weeks, rising towards this week, busiest on Tuesdays"><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#16a3b8]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#1b2130]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#22d3ee]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0f7285]"></i><i class="aspect-square rounded-[3px] bg-[#0e4d5c]"></i></div>
    <div class="mt-2.5 flex items-center justify-end gap-[3px] text-[.75rem] text-[#9aa3b5]" aria-hidden="true">Less<span class="mx-1"></span><i class="block aspect-square w-[11px] rounded-[3px] bg-[#1b2130]"></i><i class="block aspect-square w-[11px] rounded-[3px] bg-[#0e4d5c]"></i><i class="block aspect-square w-[11px] rounded-[3px] bg-[#0f7285]"></i><i class="block aspect-square w-[11px] rounded-[3px] bg-[#16a3b8]"></i><i class="block aspect-square w-[11px] rounded-[3px] bg-[#22d3ee]"></i><span class="mx-1"></span>More</div>
  </div>
  <ul class="mt-4 grid grid-cols-[repeat(auto-fit,minmax(min(100%,220px),1fr))] gap-2.5" aria-label="Pinned repositories">
    <li class="rounded-[14px] border border-[#232a38] p-3.5"><a class="rounded font-bold text-[#22d3ee] no-underline hover:underline hover:underline-offset-3 focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#22d3ee]" href="#">tidewave</a><p class="mt-1.5 text-[.84rem] leading-[1.45] text-[#9aa3b5]">Streaming CSV parser that keeps memory flat on 40 GB files.</p><small class="mt-2.5 flex items-center gap-1.5 text-[.78rem] text-[#9aa3b5]"><i class="size-[9px] rounded-full bg-[#dea584]" aria-hidden="true"></i>Rust · 9.8k stars</small></li>
    <li class="rounded-[14px] border border-[#232a38] p-3.5"><a class="rounded font-bold text-[#22d3ee] no-underline hover:underline hover:underline-offset-3 focus-visible:outline-3 focus-visible:outline-offset-3 focus-visible:outline-[#22d3ee]" href="#">quiet-forms</a><p class="mt-1.5 text-[.84rem] leading-[1.45] text-[#9aa3b5]">Form validation that announces errors once, in the right place.</p><small class="mt-2.5 flex items-center gap-1.5 text-[.78rem] text-[#9aa3b5]"><i class="size-[9px] rounded-full bg-[#3178c6]" aria-hidden="true"></i>TypeScript · 1.9k stars</small></li>
  </ul>
</article></div>
</div>

About this set

Profile cards for dark interfaces such as game, developer and music sites. The gradient ring card centres an abstract avatar inside a cyan, violet and pink conic ring under a soft glow, with the name and handle, an Open to contract work status pill, four skill tags, three stat tiles and a gradient Hire button beside a Portfolio link. The developer card with contribution graph has an initials tile, a GitHub Follow link, counts for repositories, stars, followers and sponsors, a twenty-week contribution graph with a Less to More key, and two pinned repositories with their language and stars. The graph is 140 small cells in a CSS grid that flows by column, so it scales with the card; the whole graph has one text label that sums it up instead of 140 unlabeled squares. All text colours were chosen for contrast on the near-black card, including the muted grey and the green status pill. The Bootstrap version runs inside data-bs-theme=”dark”.

What’s included

  • Conic gradient avatar ring and a gradient call-to-action
  • Contribution graph drawn with CSS grid and one accessible label
  • Status pill, skill tags and stat tiles tuned for a dark ground
  • Pinned repository cards with language colour dots
  • Bootstrap version uses data-bs-theme="dark"

Accessibility

The contribution graph has role="img" and a label that states the total, the trend and the busiest day; the colour key is hidden from screen readers. Stats and counts are description lists, and the Follow and Portfolio links include the person's name. Links show a cyan focus outline, and transitions stop under prefers-reduced-motion.

Customise it

Set --dk-card, --dk-line, --dk-ink, --dk-muted, --dk-cyan and --dk-violet on .dk. The graph levels are the .l1 to .l4 colours and the cells' class names. Tailwind uses the same hex values in colour utilities.