diff --git a/frontend/src/components/scripts/ScriptTemplateList.tsx b/frontend/src/components/scripts/ScriptTemplateList.tsx
index d6cb1dd1..07bd0b3d 100644
--- a/frontend/src/components/scripts/ScriptTemplateList.tsx
+++ b/frontend/src/components/scripts/ScriptTemplateList.tsx
@@ -11,8 +11,8 @@ function TemplateSkeleton() {
return (
diff --git a/frontend/src/components/scripts/TemplateCard.tsx b/frontend/src/components/scripts/TemplateCard.tsx
index 3b5d8931..1192cc67 100644
--- a/frontend/src/components/scripts/TemplateCard.tsx
+++ b/frontend/src/components/scripts/TemplateCard.tsx
@@ -24,7 +24,7 @@ export function TemplateCard({ template }: Props) {
onClick={() => selectTemplate(template.id)}
className={cn(
'w-full text-left px-4 py-3 rounded-xl border transition-all',
- 'hover:border-white/12 hover:bg-white/4',
+ 'hover:border-[rgba(255,255,255,0.12)] hover:bg-white/5',
isActive
? 'bg-primary/10 border-primary/30 border-l-[3px] border-l-primary'
: 'border-border bg-transparent'
diff --git a/frontend/src/store/scriptGeneratorStore.ts b/frontend/src/store/scriptGeneratorStore.ts
index 027900ee..bc3a9390 100644
--- a/frontend/src/store/scriptGeneratorStore.ts
+++ b/frontend/src/store/scriptGeneratorStore.ts
@@ -59,8 +59,12 @@ export const useScriptGeneratorStore = create
()((set, get)
generateError: null,
loadCategories: async () => {
- const categories = await scriptsApi.getCategories()
- set({ categories })
+ try {
+ const categories = await scriptsApi.getCategories()
+ set({ categories })
+ } catch {
+ // silently ignore — categories remain empty, UI degrades gracefully
+ }
},
loadTemplates: async () => {