diff --git a/apps/frontend/src/page/builds/BuildsIndexPage.vue b/apps/frontend/src/page/builds/BuildsIndexPage.vue
index 27b8304..2eeab3b 100644
--- a/apps/frontend/src/page/builds/BuildsIndexPage.vue
+++ b/apps/frontend/src/page/builds/BuildsIndexPage.vue
@@ -11,38 +11,58 @@
{{ t('common.loading') }}
-
-
-
-
-
- | Engine |
-
-
- {{ group.label }}
- |
-
-
-
-
-
- {{ col.sub }}
+
+
+
+
+
+
+ | Engine |
+
+
+ {{ group.label }}
|
-
-
-
-
-
- | {{ info.label }} |
-
-
-
-
- |
-
-
-
-
+ |
+
+
+ |
+ {{ col.sub }}
+ |
+
+
+
+
+
+ | {{ info.label }} |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
@@ -160,6 +180,40 @@ onMounted(() => store.fetch())
.builds-xmark {
@apply text-gray-200 text-lg;
}
+/* Responsive visibility */
+.builds-desktop {
+ @apply hidden md:block;
+}
+.builds-mobile {
+ @apply md:hidden space-y-4;
+}
+
+/* Mobile cards */
+.builds-card {
+ @apply bg-white rounded-2xl shadow-lg border border-gray-100 p-5;
+}
+.builds-card-title {
+ @apply text-lg font-bold text-gray-900 mb-4 pb-3 border-b border-gray-100;
+}
+.builds-card-group {
+ @apply py-2;
+}
+.builds-card-group-header {
+ @apply flex items-center gap-2 text-xs font-bold text-gray-500 uppercase tracking-wider mb-2;
+}
+.builds-card-group-icon {
+ @apply text-gray-400 text-sm;
+}
+.builds-card-kinds {
+ @apply flex flex-wrap gap-x-5 gap-y-1 pl-5 mb-2;
+}
+.builds-card-kind {
+ @apply flex items-center gap-1.5 text-sm;
+}
+.builds-card-kind-label {
+ @apply text-gray-600;
+}
+
.builds-back {
@apply mt-8 text-center;
}