diff --git a/app/assets/javascripts/discourse/app/components/badge-card.hbs b/app/assets/javascripts/discourse/app/components/badge-card.hbs
index ce72346d191..4a6fe7a13c3 100644
--- a/app/assets/javascripts/discourse/app/components/badge-card.hbs
+++ b/app/assets/javascripts/discourse/app/components/badge-card.hbs
@@ -1,10 +1,3 @@
-{{#if this.displayCount}}
-  <a
-    href={{this.url}}
-    title={{i18n "badges.granted" count=this.displayCount}}
-    class="grant-count"
-  >{{this.displayCount}}</a>
-{{/if}}
 {{#if this.badge.has_badge}}
   <a href={{this.url}} class="check-display status-checked">{{d-icon
       "check"
@@ -46,6 +39,18 @@
     <div class="badge-info-item">
       <h3><a href={{this.url}} class="badge-link">{{this.badge.name}}</a></h3>
       <div class="badge-summary">{{html-safe this.summary}}</div>
+
+      {{#if this.displayCount}}
+        <div class="badge-granted">
+          {{html-safe
+            (i18n
+              "badges.granted_with_count"
+              count=this.displayCount
+              badgeUrl=this.url
+            )
+          }}
+        </div>
+      {{/if}}
     </div>
   </div>
 </div>
\ No newline at end of file
diff --git a/app/assets/stylesheets/common/base/discourse.scss b/app/assets/stylesheets/common/base/discourse.scss
index e875d3accd8..0d1e38e3e9c 100644
--- a/app/assets/stylesheets/common/base/discourse.scss
+++ b/app/assets/stylesheets/common/base/discourse.scss
@@ -552,6 +552,7 @@ table {
         &.active {
           font-weight: bold;
           color: var(--primary);
+          background: var(--d-selected);
         }
       }
     }
diff --git a/app/assets/stylesheets/common/base/user-badges.scss b/app/assets/stylesheets/common/base/user-badges.scss
index 32886dc0ca2..acc9f026310 100644
--- a/app/assets/stylesheets/common/base/user-badges.scss
+++ b/app/assets/stylesheets/common/base/user-badges.scss
@@ -127,17 +127,23 @@
 
   .check-display {
     position: absolute;
-    left: 5px;
+    right: 5px;
     top: 5px;
   }
 
+  .badge-granted {
+    margin-top: 0.5em;
+  }
+
   .grant-count {
-    position: absolute;
-    right: 5px;
-    top: 5px;
     font-weight: bold;
     color: var(--primary-medium);
-    font-size: var(--font-up-2);
+    line-height: 1;
+  }
+
+  .grant-text {
+    color: var(--primary-medium);
+    font-size: var(--font-down-1);
   }
 
   .favorite-btn {
@@ -145,11 +151,11 @@
     right: 0;
     bottom: 0;
   }
-
   .badge-contents {
     display: flex;
-    min-height: 8em;
-    padding: 0 1.5em;
+    align-items: flex-start;
+    gap: 1rem;
+    padding: 1.5em 1.5em;
 
     .badge-link {
       color: var(--primary);
@@ -158,10 +164,8 @@
     .badge-icon {
       display: flex;
       flex-shrink: 0;
-      margin-right: 1.5em;
       align-items: center;
       justify-content: center;
-      width: 64px;
 
       svg {
         font-size: 3.5em;
@@ -190,7 +194,6 @@
       display: flex;
       flex: 1 1 auto;
       align-items: center;
-      padding: 1em 0;
       color: var(--primary);
 
       h3 {
@@ -245,19 +248,11 @@
 
 .badge-group-list {
   display: grid;
-  grid: auto-flow / repeat(3, 1fr);
+  grid-template-columns: repeat(auto-fit, minmax(18em, 1fr));
   grid-gap: 1em;
   width: 100%;
   margin-bottom: 1.5em;
 
-  @include breakpoint(medium) {
-    grid: auto-flow / repeat(2, 1fr);
-  }
-
-  @include breakpoint(mobile-extra-large) {
-    grid: auto-flow / 1fr;
-  }
-
   .title {
     font-size: var(--font-up-1);
   }
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index b2c7ed75611..f1c8d8c88bb 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -4121,6 +4121,9 @@ en:
       granted:
         one: "%{count} granted"
         other: "%{count} granted"
+      granted_with_count:
+        one: '<a href="%{badgeUrl}" title="%{count} granted" class="grant-count">%{count}x</a> <span class="grant-text">granted</span>'
+        other: '<a href="%{badgeUrl}" title="%{count} granted" class="grant-count">%{count}x</a> <span class="grant-text">granted</span>'
       select_badge_for_title: Select a badge to use as your title
       none: "(none)"
       successfully_granted: "Successfully granted %{badge} to %{username}"