HTML
Copy
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#4b5768] uppercase">Radial progress rings</span>
<div class="grid grid-cols-[repeat(auto-fit,minmax(220px,1fr))] gap-4">
<article class="flex min-w-0 items-center gap-4 rounded-2xl border border-[#e2e8f0] bg-white p-5 shadow-[0_1px_2px_rgba(15,23,42,.04),0_8px_24px_rgba(15,23,42,.05)]">
<div class="relative size-24 flex-none" role="progressbar" aria-labelledby="pg-r1" aria-valuemin="0" aria-valuemax="100" aria-valuenow="72" aria-valuetext="72%, $360,000 of $500,000">
<svg class="size-full -rotate-90" viewBox="0 0 100 100" aria-hidden="true"><circle class="fill-none stroke-[#e2e8f0] [stroke-width:10]" cx="50" cy="50" r="42"/><circle class="fill-none stroke-[#2a78d6] [stroke-width:10] [stroke-linecap:round] [stroke-dasharray:72_100] transition-[stroke-dasharray] duration-600 ease-in-out motion-reduce:transition-none" cx="50" cy="50" r="42" pathLength="100"/></svg><span class="absolute inset-0 grid place-items-center text-[1.15rem] font-[750] tabular-nums" aria-hidden="true">72%</span></div>
<div class="flex min-w-0 flex-col items-start gap-1"><h3 class="text-base font-bold" id="pg-r1">Q4 sales target</h3><p class="text-[.8rem] text-[#4b5768] tabular-nums">$360,000 of $500,000</p>
<span class="inline-flex items-center gap-1 rounded-full bg-[#dcfce7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#15803d]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>On track</span></div>
</article>
<article class="flex min-w-0 items-center gap-4 rounded-2xl border border-[#e2e8f0] bg-white p-5 shadow-[0_1px_2px_rgba(15,23,42,.04),0_8px_24px_rgba(15,23,42,.05)]">
<div class="relative size-24 flex-none" role="progressbar" aria-labelledby="pg-r2" aria-valuemin="0" aria-valuemax="100" aria-valuenow="86" aria-valuetext="86%, 43 GB of 50 GB">
<svg class="size-full -rotate-90" viewBox="0 0 100 100" aria-hidden="true"><circle class="fill-none stroke-[#e2e8f0] [stroke-width:10]" cx="50" cy="50" r="42"/><circle class="fill-none stroke-[#d97706] [stroke-width:10] [stroke-linecap:round] [stroke-dasharray:86_100] transition-[stroke-dasharray] duration-600 ease-in-out motion-reduce:transition-none" cx="50" cy="50" r="42" pathLength="100"/></svg><span class="absolute inset-0 grid place-items-center text-[1.15rem] font-[750] tabular-nums" aria-hidden="true">86%</span></div>
<div class="flex min-w-0 flex-col items-start gap-1"><h3 class="text-base font-bold" id="pg-r2">Storage used</h3><p class="text-[.8rem] text-[#4b5768] tabular-nums">43 GB of 50 GB</p>
<span class="inline-flex items-center gap-1 rounded-full bg-[#fef3c7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#b45309]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 9v4M12 17h.01"/><path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/></svg>Near limit</span></div>
</article>
<article class="flex min-w-0 items-center gap-4 rounded-2xl border border-[#e2e8f0] bg-white p-5 shadow-[0_1px_2px_rgba(15,23,42,.04),0_8px_24px_rgba(15,23,42,.05)]">
<div class="relative size-24 flex-none" role="progressbar" aria-labelledby="pg-r3" aria-valuemin="0" aria-valuemax="100" aria-valuenow="91" aria-valuetext="91%, 1,183 of 1,300 accounts">
<svg class="size-full -rotate-90" viewBox="0 0 100 100" aria-hidden="true"><circle class="fill-none stroke-[#e2e8f0] [stroke-width:10]" cx="50" cy="50" r="42"/><circle class="fill-none stroke-[#2a78d6] [stroke-width:10] [stroke-linecap:round] [stroke-dasharray:91_100] transition-[stroke-dasharray] duration-600 ease-in-out motion-reduce:transition-none" cx="50" cy="50" r="42" pathLength="100"/></svg><span class="absolute inset-0 grid place-items-center text-[1.15rem] font-[750] tabular-nums" aria-hidden="true">91%</span></div>
<div class="flex min-w-0 flex-col items-start gap-1"><h3 class="text-base font-bold" id="pg-r3">Onboarding done</h3><p class="text-[.8rem] text-[#4b5768] tabular-nums">1,183 of 1,300 accounts</p>
<span class="inline-flex items-center gap-1 rounded-full bg-[#dcfce7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#15803d]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>On track</span></div>
</article>
</div></div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#4b5768] uppercase">Target bars with a pace marker</span>
<article class="flex flex-col gap-[18px] rounded-2xl border border-[#e2e8f0] bg-white p-5 shadow-[0_1px_2px_rgba(15,23,42,.04),0_8px_24px_rgba(15,23,42,.05)]">
<div class="flex flex-wrap items-start justify-between gap-3"><div><h3 class="text-base font-bold">October targets</h3><p class="text-[.8rem] text-[#4b5768]">Day 16 of 31 · updated 09:40</p></div>
<p class="flex items-center gap-2 text-[.78rem] text-[#4b5768]"><i class="h-3.5 w-0.5 rounded-sm bg-[#0f172a]" aria-hidden="true"></i>Marker: where you should be today (52%)</p></div>
<ul class="flex flex-col gap-[18px]">
<li><div class="mb-2 flex flex-wrap items-baseline justify-between gap-2.5 text-[.88rem]"><b class="mr-auto font-semibold" id="pg-t1">New MRR</b><span class="text-[#4b5768] tabular-nums"><strong class="text-[#0f172a]">$9,820</strong> of $15,000</span><span class="inline-flex items-center gap-1 rounded-full bg-[#dcfce7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#15803d]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg>Ahead of pace</span></div>
<div class="relative h-2.5 rounded-full bg-[#e2e8f0] after:absolute after:-inset-y-1 after:left-[52%] after:w-0.5 after:rounded-sm after:bg-[#0f172a]" role="progressbar" aria-labelledby="pg-t1" aria-valuemin="0" aria-valuemax="15000" aria-valuenow="9820" aria-valuetext="$9,820 of $15,000, 65%, ahead of pace"><i class="absolute inset-y-0 left-0 w-[65%] rounded-full bg-[#2a78d6] transition-[width] duration-600 motion-reduce:transition-none"></i></div></li>
<li><div class="mb-2 flex flex-wrap items-baseline justify-between gap-2.5 text-[.88rem]"><b class="mr-auto font-semibold" id="pg-t2">Enterprise demos booked</b><span class="text-[#4b5768] tabular-nums"><strong class="text-[#0f172a]">21</strong> of 40</span><span class="inline-flex items-center gap-1 rounded-full bg-[#dcfce7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#15803d]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>On pace</span></div>
<div class="relative h-2.5 rounded-full bg-[#e2e8f0] after:absolute after:-inset-y-1 after:left-[52%] after:w-0.5 after:rounded-sm after:bg-[#0f172a]" role="progressbar" aria-labelledby="pg-t2" aria-valuemin="0" aria-valuemax="40" aria-valuenow="21" aria-valuetext="21 of 40, 53%, on pace"><i class="absolute inset-y-0 left-0 w-[52.5%] rounded-full bg-[#2a78d6] transition-[width] duration-600 motion-reduce:transition-none"></i></div></li>
<li><div class="mb-2 flex flex-wrap items-baseline justify-between gap-2.5 text-[.88rem]"><b class="mr-auto font-semibold" id="pg-t3">Newsletter signups</b><span class="text-[#4b5768] tabular-nums"><strong class="text-[#0f172a]">380</strong> of 1,000</span><span class="inline-flex items-center gap-1 rounded-full bg-[#fee2e2] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#b91c1c]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 5v14M19 12l-7 7-7-7"/></svg>Behind pace</span></div>
<div class="relative h-2.5 rounded-full bg-[#e2e8f0] after:absolute after:-inset-y-1 after:left-[52%] after:w-0.5 after:rounded-sm after:bg-[#0f172a]" role="progressbar" aria-labelledby="pg-t3" aria-valuemin="0" aria-valuemax="1000" aria-valuenow="380" aria-valuetext="380 of 1,000, 38%, behind pace"><i class="absolute inset-y-0 left-0 w-[38%] rounded-full bg-[#2a78d6] transition-[width] duration-600 motion-reduce:transition-none"></i></div></li>
<li><div class="mb-2 flex flex-wrap items-baseline justify-between gap-2.5 text-[.88rem]"><b class="mr-auto font-semibold" id="pg-t4">Partner referrals</b><span class="text-[#4b5768] tabular-nums"><strong class="text-[#0f172a]">14</strong> of 25</span><span class="inline-flex items-center gap-1 rounded-full bg-[#dcfce7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#15803d]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg>Ahead of pace</span></div>
<div class="relative h-2.5 rounded-full bg-[#e2e8f0] after:absolute after:-inset-y-1 after:left-[52%] after:w-0.5 after:rounded-sm after:bg-[#0f172a]" role="progressbar" aria-labelledby="pg-t4" aria-valuemin="0" aria-valuemax="25" aria-valuenow="14" aria-valuetext="14 of 25, 56%, ahead of pace"><i class="absolute inset-y-0 left-0 w-[56%] rounded-full bg-[#2a78d6] transition-[width] duration-600 motion-reduce:transition-none"></i></div></li>
</ul>
</article></div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#4b5768] uppercase">Goal with milestones</span>
<article class="flex flex-col gap-3.5 rounded-2xl border border-[#e2e8f0] bg-white p-5 shadow-[0_1px_2px_rgba(15,23,42,.04),0_8px_24px_rgba(15,23,42,.05)]">
<div class="flex flex-wrap items-end justify-between gap-3"><div><h3 class="text-base font-bold" id="pg-goal">2026 signup goal</h3><p class="text-[2.2rem] leading-[1.1] font-[750] tracking-[-.02em] tabular-nums">8,412 <small class="text-base font-semibold tracking-normal text-[#4b5768]">of 10,000 signups</small></p></div>
<span class="inline-flex items-center gap-1 rounded-full bg-[#dcfce7] py-0.5 pr-2 pl-1.5 text-[.74rem] font-bold whitespace-nowrap text-[#15803d]"><svg class="size-[13px] flex-none" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg>494 ahead of plan</span></div>
<div class="relative"><progress class="block h-3.5 w-full appearance-none overflow-hidden rounded-full border-0 bg-[#e2e8f0] [&::-moz-progress-bar]:rounded-full [&::-moz-progress-bar]:bg-[#2a78d6] [&::-webkit-progress-bar]:bg-[#e2e8f0] [&::-webkit-progress-value]:rounded-full [&::-webkit-progress-value]:bg-[#2a78d6]" max="10000" value="8412" aria-labelledby="pg-goal" aria-valuetext="8,412 of 10,000 signups, 84%">84%</progress><span class="pointer-events-none absolute inset-0 bg-[linear-gradient(90deg,transparent_calc(25%-1px),#fff_calc(25%-1px)_calc(25%+1px),transparent_0_calc(50%-1px),#fff_0_calc(50%+1px),transparent_0_calc(75%-1px),#fff_0_calc(75%+1px),transparent_0)]" aria-hidden="true"></span></div>
<ol class="grid grid-cols-2 gap-2.5 sm:grid-cols-4" aria-label="Milestones">
<li class="flex flex-col items-end gap-0.5 border-t-2 pt-2.5 text-right text-[.8rem] text-[#4b5768] border-[#2a78d6]"><strong class="flex items-center gap-[5px] text-[.95rem] text-[#0f172a] tabular-nums"><svg class="size-[15px] text-[#15803d]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>2,500</strong>Reached Mar 14</li>
<li class="flex flex-col items-end gap-0.5 border-t-2 pt-2.5 text-right text-[.8rem] text-[#4b5768] border-[#2a78d6]"><strong class="flex items-center gap-[5px] text-[.95rem] text-[#0f172a] tabular-nums"><svg class="size-[15px] text-[#15803d]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>5,000</strong>Reached Jul 2</li>
<li class="flex flex-col items-end gap-0.5 border-t-2 pt-2.5 text-right text-[.8rem] text-[#4b5768] border-[#2a78d6]"><strong class="flex items-center gap-[5px] text-[.95rem] text-[#0f172a] tabular-nums"><svg class="size-[15px] text-[#15803d]" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>7,500</strong>Reached Sep 21</li>
<li class="flex flex-col items-end gap-0.5 border-t-2 pt-2.5 text-right text-[.8rem] text-[#4b5768] border-[#e2e8f0]"><strong class="flex items-center gap-[5px] text-[.95rem] text-[#0f172a] tabular-nums">10,000</strong>1,588 to go</li>
</ol>
</article></div>