@commonpub/layer 0.86.3 → 0.86.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/components/AppToast.vue +3 -3
  2. package/components/CommentSection.vue +2 -2
  3. package/components/ContentStarterForm.vue +2 -2
  4. package/components/CpubDateTimeField.vue +1 -1
  5. package/components/DiscussionItem.vue +1 -1
  6. package/components/FeedItem.vue +7 -7
  7. package/components/ImageUpload.vue +2 -2
  8. package/components/ImportUrlModal.vue +2 -2
  9. package/components/LayoutRow.vue +1 -1
  10. package/components/MemberCard.vue +2 -2
  11. package/components/MirrorDetailModal.vue +9 -9
  12. package/components/MirrorRequestApproveModal.vue +2 -2
  13. package/components/PostVoteButtons.vue +4 -4
  14. package/components/PublishErrorsModal.vue +2 -2
  15. package/components/RegistryDirectory.vue +4 -4
  16. package/components/RemoteFollowDialog.vue +1 -1
  17. package/components/SearchSidebar.vue +1 -1
  18. package/components/admin/layouts/AdminLayoutsAutoForm.vue +3 -3
  19. package/components/admin/layouts/AdminLayoutsConflictModal.vue +2 -2
  20. package/components/admin/layouts/AdminLayoutsInspectorSection.vue +1 -1
  21. package/components/admin/layouts/AdminLayoutsToolbar.vue +1 -1
  22. package/components/admin/theme/AdminThemeFamilyCard.vue +2 -2
  23. package/components/admin/theme/AdminThemeOverridesPanel.vue +1 -1
  24. package/components/admin/theme/AdminThemeSceneAdmin.vue +5 -5
  25. package/components/admin/theme/AdminThemeSceneSheet.vue +2 -2
  26. package/components/admin/theme/studio/AdminThemeStudio.vue +2 -2
  27. package/components/blocks/BlockCalloutView.vue +6 -6
  28. package/components/blocks/BlockCheckpointView.vue +1 -1
  29. package/components/blocks/BlockCompareColumnsView.vue +4 -4
  30. package/components/blocks/BlockQuizView.vue +11 -11
  31. package/components/blocks/BlockSliderView.vue +3 -3
  32. package/components/contest/ContestCriteriaEditor.vue +1 -1
  33. package/components/contest/ContestEditor.vue +13 -13
  34. package/components/contest/ContestEntries.vue +6 -6
  35. package/components/contest/ContestEntryPrivateData.vue +1 -1
  36. package/components/contest/ContestHero.vue +6 -6
  37. package/components/contest/ContestJudgeManager.vue +2 -2
  38. package/components/contest/ContestJudgingCriteria.vue +1 -1
  39. package/components/contest/ContestPrizes.vue +4 -4
  40. package/components/contest/ContestRules.vue +1 -1
  41. package/components/contest/ContestSidebar.vue +6 -6
  42. package/components/contest/ContestStageCard.vue +1 -1
  43. package/components/contest/ContestStageSubmission.vue +2 -2
  44. package/components/contest/ContestStageTemplateEditor.vue +1 -1
  45. package/components/contest/ContestStakeholderManager.vue +1 -1
  46. package/components/contest/ContestSubmissionField.vue +1 -1
  47. package/components/contest/blocks/CompareColumnsBlock.vue +1 -1
  48. package/components/contest/blocks/CriteriaBarBlock.vue +1 -1
  49. package/components/contest/blocks/JudgesShowcaseBlock.vue +1 -1
  50. package/components/contest/blocks/RoadmapBlock.vue +1 -1
  51. package/components/contest/blocks/SponsorsBlock.vue +1 -1
  52. package/components/contest/blocks/TableBlock.vue +1 -1
  53. package/components/contest/blocks/TabsBlock.vue +1 -1
  54. package/components/editors/ArticleEditor.vue +1 -1
  55. package/components/editors/DocsPageTree.vue +2 -2
  56. package/components/editors/ExplainerEditor.vue +1 -1
  57. package/components/editors/ProjectEditor.vue +1 -1
  58. package/components/homepage/EditorialSection.vue +1 -1
  59. package/components/homepage/HeroSection.vue +2 -2
  60. package/components/homepage/HubsSection.vue +1 -1
  61. package/components/hub/HubResources.vue +1 -1
  62. package/components/views/ArticleView.vue +3 -3
  63. package/components/views/ExplainerView.vue +2 -2
  64. package/components/views/ProjectView.vue +6 -6
  65. package/package.json +7 -7
  66. package/pages/about.vue +1 -1
  67. package/pages/admin/api-keys.vue +5 -5
  68. package/pages/admin/categories.vue +2 -2
  69. package/pages/admin/content.vue +6 -6
  70. package/pages/admin/features.vue +2 -2
  71. package/pages/admin/federation.vue +3 -3
  72. package/pages/admin/homepage.vue +4 -4
  73. package/pages/admin/layouts/[id].vue +2 -2
  74. package/pages/admin/layouts/index.vue +1 -1
  75. package/pages/admin/navigation.vue +2 -2
  76. package/pages/admin/reports.vue +4 -4
  77. package/pages/admin/theme/edit/[id].vue +1 -1
  78. package/pages/admin/users.vue +3 -3
  79. package/pages/admin/video-categories.vue +1 -1
  80. package/pages/auth/forgot-password.vue +1 -1
  81. package/pages/auth/login.vue +1 -1
  82. package/pages/auth/register.vue +2 -2
  83. package/pages/auth/reset-password.vue +3 -3
  84. package/pages/auth/verify-email.vue +3 -3
  85. package/pages/authorize_interaction.vue +2 -2
  86. package/pages/cert/[code].vue +3 -3
  87. package/pages/contests/[slug]/entries/[entryId].vue +2 -2
  88. package/pages/contests/[slug]/judge.vue +4 -4
  89. package/pages/contests/[slug]/results.vue +4 -4
  90. package/pages/dashboard.vue +3 -3
  91. package/pages/docs/[siteSlug]/edit.vue +5 -5
  92. package/pages/explore.vue +1 -1
  93. package/pages/federated-hubs/[id]/posts/[postId].vue +1 -1
  94. package/pages/federation/users/[handle].vue +1 -1
  95. package/pages/hubs/[slug]/index.vue +2 -2
  96. package/pages/hubs/[slug]/invites.vue +2 -2
  97. package/pages/hubs/[slug]/members.vue +3 -3
  98. package/pages/hubs/[slug]/posts/[postId].vue +2 -2
  99. package/pages/index.vue +7 -7
  100. package/pages/learn/[slug]/[lessonSlug]/edit.vue +2 -2
  101. package/pages/learn/[slug]/[lessonSlug]/index.vue +10 -10
  102. package/pages/learn/[slug]/edit.vue +4 -4
  103. package/pages/learn/[slug]/index.vue +4 -4
  104. package/pages/learn/index.vue +6 -6
  105. package/pages/messages/index.vue +2 -2
  106. package/pages/mirror/[id].vue +1 -1
  107. package/pages/products/[slug].vue +1 -1
  108. package/pages/settings/account.vue +2 -2
  109. package/pages/settings/profile.vue +1 -1
  110. package/pages/u/[username]/[type]/[slug]/edit.vue +4 -4
  111. package/pages/u/[username]/index.vue +5 -5
  112. package/pages/videos/index.vue +3 -3
  113. package/theme/base.css +31 -0
package/pages/about.vue CHANGED
@@ -80,7 +80,7 @@ const { hubs: hubsEnabled, learning: learningEnabled, contests: contestsEnabled,
80
80
  background-size: 32px 32px; opacity: 0.2;
81
81
  }
82
82
  .cpub-about-hero-inner { position: relative; z-index: 1; max-width: 600px; margin: 0 auto; }
83
- .cpub-about-badge { font-family: var(--font-mono); font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; padding: 4px 12px; border: var(--border-width-default) solid var(--green); background: var(--green-bg); color: var(--green); display: inline-flex; align-items: center; gap: 6px; margin-bottom: 16px; }
83
+ .cpub-about-badge { font-family: var(--font-mono); font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; padding: 4px 12px; border: var(--border-width-default) solid var(--green); background: var(--green-bg); color: var(--green-text); display: inline-flex; align-items: center; gap: 6px; margin-bottom: 16px; }
84
84
  .cpub-about-title { font-size: 36px; font-weight: 700; margin-bottom: 12px; letter-spacing: -0.02em; }
85
85
  .cpub-about-subtitle { font-size: 15px; color: var(--text-dim); line-height: 1.6; }
86
86
 
@@ -449,7 +449,7 @@ function fmtErrorRate(rate: number): string {
449
449
  border: var(--border-width-default) solid var(--border); font-family: inherit;
450
450
  }
451
451
  .cpub-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
452
- .cpub-form-error { color: var(--red); font-size: 12px; margin: 8px 0; }
452
+ .cpub-form-error { color: var(--red-text); font-size: 12px; margin: 8px 0; }
453
453
  .cpub-form-actions { display: flex; justify-content: flex-end; gap: 10px; }
454
454
 
455
455
  .cpub-scope-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 6px; }
@@ -472,7 +472,7 @@ function fmtErrorRate(rate: number): string {
472
472
  .cpub-btn-primary { background: var(--accent); color: var(--color-text-inverse); border-color: var(--accent); }
473
473
  .cpub-btn-link { background: none; border: none; color: var(--text-dim); cursor: pointer; padding: 4px 8px; font-size: 12px; }
474
474
  .cpub-btn-link:hover { color: var(--text); }
475
- .cpub-btn-danger { color: var(--red); }
475
+ .cpub-btn-danger { color: var(--red-text); }
476
476
 
477
477
  .cpub-key-table {
478
478
  width: 100%; border-collapse: collapse;
@@ -493,9 +493,9 @@ function fmtErrorRate(rate: number): string {
493
493
  }
494
494
 
495
495
  .cpub-key-badge { font-family: var(--font-mono); font-size: 10px; padding: 2px 8px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
496
- .cpub-key-badge-green { background: var(--green-bg); color: var(--green); border: var(--border-width-default) solid var(--green); }
497
- .cpub-key-badge-yellow { background: var(--yellow-bg); color: var(--yellow); border: var(--border-width-default) solid var(--yellow); }
498
- .cpub-key-badge-red { background: var(--red-bg); color: var(--red); border: var(--border-width-default) solid var(--red); }
496
+ .cpub-key-badge-green { background: var(--green-bg); color: var(--green-text); border: var(--border-width-default) solid var(--green); }
497
+ .cpub-key-badge-yellow { background: var(--yellow-bg); color: var(--yellow-text); border: var(--border-width-default) solid var(--yellow); }
498
+ .cpub-key-badge-red { background: var(--red-bg); color: var(--red-text); border: var(--border-width-default) solid var(--red); }
499
499
 
500
500
  .cpub-key-actions { display: flex; gap: 8px; }
501
501
  .cpub-key-usage-row td { background: var(--surface2); padding: 16px; }
@@ -243,11 +243,11 @@ async function deleteCategory(cat: Category): Promise<void> {
243
243
  .cpub-admin-actions { display: flex; gap: 6px; }
244
244
  .cpub-admin-action { background: none; border: none; color: var(--text-faint); cursor: pointer; font-size: 12px; padding: 4px 6px; }
245
245
  .cpub-admin-action:hover { color: var(--accent); }
246
- .cpub-admin-action--danger:hover { color: var(--red); }
246
+ .cpub-admin-action--danger:hover { color: var(--red-text); }
247
247
 
248
248
  .cpub-cat-name { display: flex; align-items: center; gap: 6px; font-weight: 500; }
249
249
  .cpub-cat-type { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; padding: 2px 8px; }
250
- .cpub-cat-system { color: var(--teal); background: var(--teal-bg, var(--surface2)); border: var(--border-width-default) solid var(--teal-border, var(--border2)); }
250
+ .cpub-cat-system { color: var(--teal-text); background: var(--teal-bg, var(--surface2)); border: var(--border-width-default) solid var(--teal-border, var(--border2)); }
251
251
  .cpub-cat-custom { color: var(--text-dim); background: var(--surface2); border: var(--border-width-default) solid var(--border2); }
252
252
 
253
253
  .cpub-empty { color: var(--text-faint); text-align: center; padding: var(--space-10) 0; }
@@ -279,20 +279,20 @@ async function setCategory(id: string, categoryId: string | null): Promise<void>
279
279
  .cpub-admin-num { font-family: var(--font-mono); font-size: 11px; color: var(--text-faint); }
280
280
  .cpub-admin-date { font-family: var(--font-mono); font-size: 11px; color: var(--text-faint); }
281
281
  .cpub-status-badge { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; padding: 2px 8px; }
282
- .cpub-status-published { color: var(--green); background: var(--green-bg); border: var(--border-width-default) solid var(--green-border); }
282
+ .cpub-status-published { color: var(--green-text); background: var(--green-bg); border: var(--border-width-default) solid var(--green-border); }
283
283
  .cpub-status-draft { color: var(--text-dim); background: var(--surface2); border: var(--border-width-default) solid var(--border2); }
284
284
  .cpub-admin-actions { display: flex; gap: 6px; }
285
285
  .cpub-admin-action { background: none; border: none; color: var(--text-faint); cursor: pointer; font-size: 12px; padding: 4px 6px; }
286
286
  .cpub-admin-action:hover { color: var(--accent); }
287
- .cpub-admin-action--active { color: var(--teal); }
288
- .cpub-admin-action--active-star { color: var(--yellow, #e6b800); }
289
- .cpub-admin-action--danger:hover { color: var(--red); }
287
+ .cpub-admin-action--active { color: var(--teal-text); }
288
+ .cpub-admin-action--active-star { color: var(--yellow-text, #e6b800); }
289
+ .cpub-admin-action--danger:hover { color: var(--red-text); }
290
290
  .cpub-admin-federated-tag { font-family: var(--font-mono); font-size: 9px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.04em; display: flex; align-items: center; gap: 3px; }
291
291
  .cpub-row-selected { background: var(--accent-bg); }
292
292
  .cpub-admin-badges { display: flex; gap: 4px; margin-top: 2px; }
293
293
  .cpub-mini-badge { font-family: var(--font-mono); font-size: 9px; display: inline-flex; align-items: center; gap: 3px; }
294
- .cpub-mini-badge--editorial { color: var(--teal); }
295
- .cpub-mini-badge--featured { color: var(--yellow, #e6b800); }
294
+ .cpub-mini-badge--editorial { color: var(--teal-text); }
295
+ .cpub-mini-badge--featured { color: var(--yellow-text, #e6b800); }
296
296
  .cpub-cat-select {
297
297
  font-family: var(--font-mono);
298
298
  font-size: 10px;
@@ -264,7 +264,7 @@ async function resetOverride(key: string): Promise<void> {
264
264
  }
265
265
 
266
266
  .cpub-flag-badge--override { color: var(--accent); background: var(--accent-bg); border: var(--border-width-default) solid var(--accent-border); }
267
- .cpub-flag-badge--pending { color: var(--yellow); background: var(--yellow-bg); border: var(--border-width-default) solid var(--yellow); }
267
+ .cpub-flag-badge--pending { color: var(--yellow-text); background: var(--yellow-bg); border: var(--border-width-default) solid var(--yellow); }
268
268
 
269
269
  .cpub-flag-reset {
270
270
  background: none;
@@ -330,7 +330,7 @@ async function resetOverride(key: string): Promise<void> {
330
330
  font-family: var(--font-mono);
331
331
  font-size: 11px;
332
332
  font-weight: 600;
333
- color: var(--yellow, var(--text-dim));
333
+ color: var(--yellow-text, var(--text-dim));
334
334
  flex: 1;
335
335
  }
336
336
 
@@ -726,7 +726,7 @@ async function refederate(): Promise<void> {
726
726
  }
727
727
  .cpub-fed-btn-sm:hover { border-color: var(--accent); color: var(--accent); }
728
728
  .cpub-fed-btn-sm:disabled { opacity: 0.5; cursor: not-allowed; }
729
- .cpub-fed-btn-danger:hover { border-color: var(--red); color: var(--red); }
729
+ .cpub-fed-btn-danger:hover { border-color: var(--red); color: var(--red-text); }
730
730
 
731
731
  .cpub-fed-activity-list {
732
732
  border: var(--border-width-default) solid var(--border); overflow: hidden;
@@ -751,9 +751,9 @@ async function refederate(): Promise<void> {
751
751
  .cpub-fed-status.delivered, .cpub-fed-status.processed, .cpub-fed-status.active { color: var(--accent); border-color: var(--accent-border); background: var(--accent-bg); }
752
752
  .cpub-fed-status.pending { color: var(--text-dim); }
753
753
  .cpub-fed-status.paused { color: var(--text-dim); background: var(--surface2); }
754
- .cpub-fed-status.failed { color: var(--red); border-color: var(--red); }
754
+ .cpub-fed-status.failed { color: var(--red-text); border-color: var(--red); }
755
755
  .cpub-fed-time { font-family: var(--font-mono); font-size: 10px; color: var(--text-faint); white-space: nowrap; }
756
- .cpub-fed-error { font-size: 10px; color: var(--red); font-family: var(--font-mono); cursor: help; }
756
+ .cpub-fed-error { font-size: 10px; color: var(--red-text); font-family: var(--font-mono); cursor: help; }
757
757
  .cpub-fed-info-text { font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; }
758
758
  .cpub-fed-info-text code { font-family: var(--font-mono); background: var(--surface2); padding: 1px 4px; }
759
759
 
@@ -289,8 +289,8 @@ const { layoutEngine } = useFeatures();
289
289
  .cpub-section-actions { display: flex; gap: 6px; flex-shrink: 0; }
290
290
  .cpub-section-action { background: none; border: none; color: var(--text-faint); cursor: pointer; font-size: 12px; padding: 4px 6px; }
291
291
  .cpub-section-action:hover { color: var(--accent); }
292
- .cpub-section-action--active { color: var(--green); }
293
- .cpub-section-action--danger:hover { color: var(--red); }
292
+ .cpub-section-action--active { color: var(--green-text); }
293
+ .cpub-section-action--danger:hover { color: var(--red-text); }
294
294
 
295
295
  .cpub-section-editor { width: 100%; padding: 12px 0 0; border-top: var(--border-width-default) solid var(--border2); margin-top: 8px; }
296
296
  .cpub-editor-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
@@ -302,7 +302,7 @@ const { layoutEngine } = useFeatures();
302
302
  .cpub-editor-textarea { font-size: 12px; font-family: var(--font-mono); padding: 8px 10px; border: var(--border-width-default) solid var(--border); background: var(--bg); color: var(--text); outline: none; resize: vertical; }
303
303
 
304
304
  .cpub-sections-footer { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4); margin-top: var(--space-4); background: var(--yellow-bg, var(--surface2)); border: var(--border-width-default) solid var(--yellow, var(--border)); }
305
- .cpub-sections-footer-text { font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--yellow, var(--text-dim)); flex: 1; }
305
+ .cpub-sections-footer-text { font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--yellow-text, var(--text-dim)); flex: 1; }
306
306
 
307
307
  @media (max-width: 768px) {
308
308
  .cpub-admin-header { flex-direction: column; }
@@ -324,7 +324,7 @@ const { layoutEngine } = useFeatures();
324
324
  border: 1px solid var(--yellow, var(--border));
325
325
  margin-bottom: var(--space-4);
326
326
  }
327
- .cpub-admin-homepage-deprecation i { color: var(--yellow, var(--text-dim)); font-size: var(--text-lg); margin-top: 2px; }
327
+ .cpub-admin-homepage-deprecation i { color: var(--yellow-text, var(--text-dim)); font-size: var(--text-lg); margin-top: 2px; }
328
328
  .cpub-admin-homepage-deprecation p { margin: 0 0 var(--space-1) 0; color: var(--text); }
329
329
  .cpub-admin-homepage-deprecation-link {
330
330
  display: inline-flex; align-items: center; gap: var(--space-1);
@@ -841,7 +841,7 @@ async function onConflictForceSave(): Promise<void> {
841
841
  flex-shrink: 0;
842
842
  }
843
843
  .cpub-admin-layouts-editor-thrash-icon {
844
- color: var(--yellow);
844
+ color: var(--yellow-text);
845
845
  font-size: var(--text-lg);
846
846
  flex-shrink: 0;
847
847
  }
@@ -894,7 +894,7 @@ async function onConflictForceSave(): Promise<void> {
894
894
  }
895
895
  .cpub-admin-layouts-editor-thrash-btn--primary:hover { filter: brightness(1.1); background: var(--accent); }
896
896
  .cpub-admin-layouts-editor-thrash-btn--danger {
897
- color: var(--red);
897
+ color: var(--red-text);
898
898
  border-color: var(--red);
899
899
  }
900
900
  .cpub-admin-layouts-editor-thrash-btn--danger:hover {
@@ -352,5 +352,5 @@ const sortedLayouts = computed<LayoutRecord[]>(() => {
352
352
  }
353
353
  .cpub-admin-layouts-btn:hover { background: var(--surface2); }
354
354
  .cpub-admin-layouts-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
355
- .cpub-admin-layouts-btn--danger:hover { color: var(--red); border-color: var(--red); }
355
+ .cpub-admin-layouts-btn--danger:hover { color: var(--red-text); border-color: var(--red); }
356
356
  </style>
@@ -316,7 +316,7 @@ const editingId = ref<string | null>(null);
316
316
  .cpub-nav-actions { display: flex; gap: 6px; flex-shrink: 0; }
317
317
  .cpub-nav-action { background: none; border: none; color: var(--text-faint); cursor: pointer; font-size: 12px; padding: 4px 6px; }
318
318
  .cpub-nav-action:hover { color: var(--accent); }
319
- .cpub-nav-action--danger:hover { color: var(--red); }
319
+ .cpub-nav-action--danger:hover { color: var(--red-text); }
320
320
 
321
321
  .cpub-nav-editor { width: 100%; padding: 12px 0 0; border-top: var(--border-width-default) solid var(--border2); margin-top: 8px; }
322
322
  .cpub-editor-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
@@ -337,7 +337,7 @@ const editingId = ref<string | null>(null);
337
337
  .cpub-children-empty { font-size: 12px; color: var(--text-faint); font-style: italic; }
338
338
 
339
339
  .cpub-nav-footer { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4); margin-top: var(--space-4); background: var(--yellow-bg, var(--surface2)); border: var(--border-width-default) solid var(--yellow, var(--border)); }
340
- .cpub-nav-footer-text { font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--yellow, var(--text-dim)); flex: 1; }
340
+ .cpub-nav-footer-text { font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--yellow-text, var(--text-dim)); flex: 1; }
341
341
 
342
342
  @media (max-width: 768px) {
343
343
  .cpub-admin-header { flex-direction: column; }
@@ -117,7 +117,7 @@ watch(statusFilter, () => {
117
117
  <button v-if="statusFilter === 'pending'" class="cpub-btn cpub-btn-sm" @click="bulkAction('reviewed')">
118
118
  <i class="fa-solid fa-eye" /> Mark Reviewed
119
119
  </button>
120
- <button class="cpub-btn cpub-btn-sm" style="color: var(--green); border-color: var(--green-border);" @click="bulkAction('resolved')">
120
+ <button class="cpub-btn cpub-btn-sm" style="color: var(--green-text); border-color: var(--green-border);" @click="bulkAction('resolved')">
121
121
  <i class="fa-solid fa-check" /> Resolve
122
122
  </button>
123
123
  <button class="cpub-btn cpub-btn-sm" @click="bulkAction('dismissed')">
@@ -149,7 +149,7 @@ watch(statusFilter, () => {
149
149
  <button v-if="report.status === 'pending'" class="cpub-btn cpub-btn-sm" @click="resolveReport(report.id, 'reviewed')">
150
150
  <i class="fa-solid fa-eye" /> Mark Reviewed
151
151
  </button>
152
- <button class="cpub-btn cpub-btn-sm" style="color: var(--green); border-color: var(--green-border);" @click="resolveReport(report.id, 'resolved')">
152
+ <button class="cpub-btn cpub-btn-sm" style="color: var(--green-text); border-color: var(--green-border);" @click="resolveReport(report.id, 'resolved')">
153
153
  <i class="fa-solid fa-check" /> Resolve
154
154
  </button>
155
155
  <button class="cpub-btn cpub-btn-sm" @click="resolveReport(report.id, 'dismissed')">
@@ -183,9 +183,9 @@ watch(statusFilter, () => {
183
183
  .cpub-report-checkbox { display: flex; align-items: center; cursor: pointer; }
184
184
  .cpub-report-checkbox input { cursor: pointer; accent-color: var(--accent); }
185
185
  .cpub-report-status { font-size: 10px; font-family: var(--font-mono); font-weight: 600; text-transform: uppercase; padding: 2px 8px; }
186
- .cpub-status-pending { background: var(--yellow-bg); color: var(--yellow); border: var(--border-width-default) solid var(--yellow-border); }
186
+ .cpub-status-pending { background: var(--yellow-bg); color: var(--yellow-text); border: var(--border-width-default) solid var(--yellow-border); }
187
187
  .cpub-status-reviewed { background: var(--blue-bg, var(--accent-bg)); color: var(--blue, var(--accent)); border: var(--border-width-default) solid var(--blue-border, var(--accent-border)); }
188
- .cpub-status-resolved { background: var(--green-bg); color: var(--green); border: var(--border-width-default) solid var(--green-border); }
188
+ .cpub-status-resolved { background: var(--green-bg); color: var(--green-text); border: var(--border-width-default) solid var(--green-border); }
189
189
  .cpub-status-dismissed { background: var(--surface2); color: var(--text-faint); border: var(--border-width-default) solid var(--border2); }
190
190
  .cpub-report-type { font-size: 10px; font-family: var(--font-mono); color: var(--accent); background: var(--accent-bg); padding: 2px 6px; border: var(--border-width-default) solid var(--accent-border); }
191
191
  .cpub-report-date { font-size: 11px; color: var(--text-faint); margin-left: auto; font-family: var(--font-mono); }
@@ -774,7 +774,7 @@ onBeforeUnmount(() => {
774
774
  padding: var(--space-3) var(--space-4);
775
775
  background: var(--red-bg);
776
776
  border-bottom: var(--border-width-default) solid var(--red);
777
- color: var(--red);
777
+ color: var(--red-text);
778
778
  font-size: var(--text-sm);
779
779
  display: flex;
780
780
  align-items: center;
@@ -208,11 +208,11 @@ async function deleteUser(userId: string, username: string): Promise<void> {
208
208
  .admin-role-select { padding: 3px 6px; border: var(--border-width-default) solid var(--border2); background: var(--surface); color: var(--text-dim); font-size: 11px; font-family: var(--font-mono); text-transform: capitalize; cursor: pointer; }
209
209
  .admin-role-select:focus { border-color: var(--accent); outline: none; }
210
210
  .admin-status-btn { font-size: 10px; font-family: var(--font-mono); text-transform: uppercase; padding: 2px 8px; cursor: pointer; border: var(--border-width-default) solid; background: none; }
211
- .status-active { color: var(--green); border-color: var(--green-border); background: var(--green-bg); }
212
- .status-suspended { color: var(--red); border-color: var(--red-border); background: var(--red-bg); }
211
+ .status-active { color: var(--green-text); border-color: var(--green-border); background: var(--green-bg); }
212
+ .status-suspended { color: var(--red-text); border-color: var(--red-border); background: var(--red-bg); }
213
213
  .admin-status-btn:hover { opacity: 0.8; }
214
214
  .admin-delete-btn { background: none; border: none; color: var(--text-faint); cursor: pointer; font-size: 12px; padding: 4px 6px; }
215
- .admin-delete-btn:hover { color: var(--red); }
215
+ .admin-delete-btn:hover { color: var(--red-text); }
216
216
  .admin-roles-btn { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; padding: 3px 8px; border: var(--border-width-default) solid var(--border2); background: var(--surface); color: var(--text-dim); cursor: pointer; }
217
217
  .admin-roles-btn:hover { border-color: var(--accent); color: var(--text); }
218
218
  .admin-roles-row td { background: var(--surface2); }
@@ -190,7 +190,7 @@ async function deleteCategory(cat: VideoCategory): Promise<void> {
190
190
  .cpub-admin-actions { display: flex; gap: 6px; }
191
191
  .cpub-admin-action { background: none; border: none; color: var(--text-faint); cursor: pointer; font-size: 12px; padding: 4px 6px; }
192
192
  .cpub-admin-action:hover { color: var(--accent); }
193
- .cpub-admin-action--danger:hover { color: var(--red); }
193
+ .cpub-admin-action--danger:hover { color: var(--red-text); }
194
194
 
195
195
  .cpub-cat-name { display: flex; align-items: center; gap: 6px; font-weight: 500; }
196
196
 
@@ -88,7 +88,7 @@ async function handleSubmit(): Promise<void> {
88
88
  .cpub-forgot-success-text { font-size: 13px; color: var(--text-dim); line-height: 1.6; }
89
89
  .cpub-back-link { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--accent); text-decoration: none; justify-content: center; margin-top: var(--space-4); }
90
90
  .cpub-back-link:hover { text-decoration: underline; }
91
- .cpub-form-error { padding: var(--space-3); background: var(--red-bg); color: var(--red); border: var(--border-width-default) solid var(--red); border-radius: var(--radius); font-size: 12px; }
91
+ .cpub-form-error { padding: var(--space-3); background: var(--red-bg); color: var(--red-text); border: var(--border-width-default) solid var(--red); border-radius: var(--radius); font-size: 12px; }
92
92
  .cpub-field { display: flex; flex-direction: column; gap: 4px; }
93
93
  .cpub-field-label { font-size: 12px; font-weight: 500; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-dim); }
94
94
  .cpub-field-input { padding: 8px 12px; border: var(--border-width-default) solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text); font-size: 13px; font-family: var(--font-sans); outline: none; width: 100%; transition: border-color 0.15s; }
@@ -308,7 +308,7 @@ function handleMastodonLogin(): void {
308
308
  .form-error {
309
309
  padding: var(--space-3);
310
310
  background: var(--red-bg);
311
- color: var(--red);
311
+ color: var(--red-text);
312
312
  border: var(--border-width-default) solid var(--red);
313
313
  border-radius: var(--radius);
314
314
  font-size: 12px;
@@ -141,7 +141,7 @@ async function handleSubmit(): Promise<void> {
141
141
  .form-error {
142
142
  padding: var(--space-3);
143
143
  background: var(--red-bg);
144
- color: var(--red);
144
+ color: var(--red-text);
145
145
  border: var(--border-width-default) solid var(--red);
146
146
  border-radius: var(--radius);
147
147
  font-size: 12px;
@@ -251,7 +251,7 @@ async function handleSubmit(): Promise<void> {
251
251
 
252
252
  .register-success-icon {
253
253
  font-size: 36px;
254
- color: var(--green);
254
+ color: var(--green-text);
255
255
  margin-bottom: 16px;
256
256
  }
257
257
 
@@ -55,7 +55,7 @@ async function handleSubmit(): Promise<void> {
55
55
 
56
56
  <template v-if="success">
57
57
  <div class="cpub-reset-success">
58
- <i class="fa-solid fa-check-circle" style="font-size: 24px; color: var(--green); margin-bottom: 12px;"></i>
58
+ <i class="fa-solid fa-check-circle" style="font-size: 24px; color: var(--green-text); margin-bottom: 12px;"></i>
59
59
  <p class="cpub-reset-success-text">Your password has been reset successfully.</p>
60
60
  </div>
61
61
  <NuxtLink to="/auth/login" class="cpub-back-link">
@@ -65,7 +65,7 @@ async function handleSubmit(): Promise<void> {
65
65
 
66
66
  <template v-else-if="tokenError">
67
67
  <div class="cpub-reset-error-state">
68
- <i class="fa-solid fa-circle-xmark" style="font-size: 24px; color: var(--red); margin-bottom: 12px;"></i>
68
+ <i class="fa-solid fa-circle-xmark" style="font-size: 24px; color: var(--red-text); margin-bottom: 12px;"></i>
69
69
  <p class="cpub-reset-success-text">This reset link is invalid or has expired.</p>
70
70
  </div>
71
71
  <NuxtLink to="/auth/forgot-password" class="cpub-back-link">
@@ -123,7 +123,7 @@ async function handleSubmit(): Promise<void> {
123
123
  .cpub-reset-success-text { font-size: 13px; color: var(--text-dim); line-height: 1.6; }
124
124
  .cpub-back-link { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--accent); text-decoration: none; justify-content: center; margin-top: var(--space-4); }
125
125
  .cpub-back-link:hover { text-decoration: underline; }
126
- .cpub-form-error { padding: var(--space-3); background: var(--red-bg); color: var(--red); border: var(--border-width-default) solid var(--red); border-radius: var(--radius); font-size: 12px; }
126
+ .cpub-form-error { padding: var(--space-3); background: var(--red-bg); color: var(--red-text); border: var(--border-width-default) solid var(--red); border-radius: var(--radius); font-size: 12px; }
127
127
  .cpub-field { display: flex; flex-direction: column; gap: 4px; }
128
128
  .cpub-field-label { font-size: 12px; font-weight: 500; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-dim); }
129
129
  .cpub-field-input { padding: 8px 12px; border: var(--border-width-default) solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text); font-size: 13px; font-family: var(--font-sans); outline: none; width: 100%; transition: border-color 0.15s; }
@@ -43,7 +43,7 @@ if (!token.value) {
43
43
 
44
44
  <!-- Success -->
45
45
  <div v-else-if="status === 'success'" class="verify-status">
46
- <i class="fa-solid fa-check-circle" style="font-size: 24px; color: var(--green); margin-bottom: 12px;"></i>
46
+ <i class="fa-solid fa-check-circle" style="font-size: 24px; color: var(--green-text); margin-bottom: 12px;"></i>
47
47
  <p class="verify-text">Your email has been verified successfully!</p>
48
48
  <NuxtLink to="/auth/login" class="verify-link">
49
49
  <i class="fa-solid fa-arrow-right"></i> Continue to login
@@ -52,7 +52,7 @@ if (!token.value) {
52
52
 
53
53
  <!-- Error -->
54
54
  <div v-else-if="status === 'error'" class="verify-status">
55
- <i class="fa-solid fa-circle-xmark" style="font-size: 24px; color: var(--red); margin-bottom: 12px;"></i>
55
+ <i class="fa-solid fa-circle-xmark" style="font-size: 24px; color: var(--red-text); margin-bottom: 12px;"></i>
56
56
  <p class="verify-text">{{ errorMessage }}</p>
57
57
  <NuxtLink to="/auth/login" class="verify-link">
58
58
  <i class="fa-solid fa-arrow-left"></i> Back to login
@@ -61,7 +61,7 @@ if (!token.value) {
61
61
 
62
62
  <!-- No token -->
63
63
  <div v-else class="verify-status">
64
- <i class="fa-solid fa-circle-exclamation" style="font-size: 24px; color: var(--yellow); margin-bottom: 12px;"></i>
64
+ <i class="fa-solid fa-circle-exclamation" style="font-size: 24px; color: var(--yellow-text); margin-bottom: 12px;"></i>
65
65
  <p class="verify-text">No verification token found. Please check the link in your email.</p>
66
66
  <NuxtLink to="/auth/login" class="verify-link">
67
67
  <i class="fa-solid fa-arrow-left"></i> Back to login
@@ -140,7 +140,7 @@ useSeoMeta({
140
140
  font-size: 14px;
141
141
  }
142
142
  .cpub-authorize-error {
143
- color: var(--red, #ef4444);
143
+ color: var(--red-text, #ef4444);
144
144
  font-size: 14px;
145
145
  }
146
146
  .cpub-authorize-desc {
@@ -177,7 +177,7 @@ useSeoMeta({
177
177
  border: var(--border-width-default) solid var(--border);
178
178
  }
179
179
  .cpub-authorize-success {
180
- color: var(--green, #22c55e);
180
+ color: var(--green-text, #22c55e);
181
181
  font-size: 14px;
182
182
  font-weight: 600;
183
183
  }
@@ -95,7 +95,7 @@ useSeoMeta({
95
95
  align-items: center;
96
96
  justify-content: center;
97
97
  font-size: 28px;
98
- color: var(--yellow);
98
+ color: var(--yellow-text);
99
99
  }
100
100
 
101
101
  .cert-eyebrow {
@@ -137,14 +137,14 @@ useSeoMeta({
137
137
  right: 16px;
138
138
  font-size: 11px;
139
139
  font-family: var(--font-mono);
140
- color: var(--green);
140
+ color: var(--green-text);
141
141
  display: flex;
142
142
  align-items: center;
143
143
  gap: 4px;
144
144
  }
145
145
 
146
146
  .cert-not-found { text-align: center; padding: 64px 0; color: var(--text-dim); }
147
- .cert-not-found-icon { font-size: 40px; color: var(--red); margin-bottom: 16px; }
147
+ .cert-not-found-icon { font-size: 40px; color: var(--red-text); margin-bottom: 16px; }
148
148
  .cert-not-found h1 { font-size: 20px; margin-bottom: 8px; }
149
149
  .cert-not-found p { font-size: 13px; }
150
150
 
@@ -178,9 +178,9 @@ watch(contestPii, (on) => { if (on) void loadPrivate(); }, { immediate: true });
178
178
  .cpub-ed-av-init { display: inline-flex; align-items: center; justify-content: center; background: var(--surface3); color: var(--text-faint); font-size: 8px; }
179
179
  .cpub-ed-date { color: var(--text-faint); }
180
180
  .cpub-ed-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 9px; text-transform: uppercase; letter-spacing: .05em; padding: 2px 7px; border: var(--border-width-default) solid var(--border2); background: var(--surface2); color: var(--text-dim); }
181
- .cpub-ed-in { color: var(--green); border-color: var(--green-border); background: var(--green-bg); }
181
+ .cpub-ed-in { color: var(--green-text); border-color: var(--green-border); background: var(--green-bg); }
182
182
  .cpub-ed-out { color: var(--text-faint); }
183
- .cpub-ed-rank { color: var(--yellow); border-color: var(--yellow); background: var(--yellow-bg); }
183
+ .cpub-ed-rank { color: var(--yellow-text); border-color: var(--yellow); background: var(--yellow-bg); }
184
184
  .cpub-ed-score { color: var(--accent); border-color: var(--accent-border); background: var(--accent-bg); }
185
185
 
186
186
  .cpub-ed-sechead { font-size: 15px; font-weight: 700; display: flex; align-items: center; gap: 8px; margin: 0 0 14px; }
@@ -413,8 +413,8 @@ async function submitScore(entryId: string): Promise<void> {
413
413
  .cpub-judge-progress-fill { height: 100%; background: var(--accent); transition: width 0.3s ease; }
414
414
 
415
415
  .cpub-judge-alert { padding: 10px 14px; font-size: 12px; border: var(--border-width-default) solid; margin-bottom: 16px; }
416
- .cpub-judge-alert--error { background: var(--red-bg); color: var(--red); border-color: var(--red); }
417
- .cpub-judge-alert--success { background: var(--green-bg); color: var(--green); border-color: var(--green); }
416
+ .cpub-judge-alert--error { background: var(--red-bg); color: var(--red-text); border-color: var(--red); }
417
+ .cpub-judge-alert--success { background: var(--green-bg); color: var(--green-text); border-color: var(--green); }
418
418
 
419
419
  .cpub-judge-empty { text-align: center; padding: 48px 0; color: var(--text-faint); font-size: 13px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
420
420
  .cpub-judge-empty i { font-size: 24px; }
@@ -471,8 +471,8 @@ async function submitScore(entryId: string): Promise<void> {
471
471
  }
472
472
  .cpub-judge-feedback:focus { border-color: var(--accent); }
473
473
  .cpub-judge-save-status { display: flex; align-items: center; gap: 5px; margin: 2px 0 0; font-size: 11px; font-family: var(--font-mono); }
474
- .cpub-judge-save-status.is-ok { color: var(--green); }
475
- .cpub-judge-save-status.is-err { color: var(--red); }
474
+ .cpub-judge-save-status.is-ok { color: var(--green-text); }
475
+ .cpub-judge-save-status.is-err { color: var(--red-text); }
476
476
  .cpub-judge-save-status.is-muted { color: var(--text-faint); }
477
477
  .cpub-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; }
478
478
 
@@ -77,7 +77,7 @@ function medalColor(rank: number): string {
77
77
  <i class="fa-solid fa-arrow-left"></i> Back to contest
78
78
  </NuxtLink>
79
79
  <h1 class="cpub-results-title">
80
- <i class="fa-solid fa-ranking-star" style="color: var(--yellow);"></i>
80
+ <i class="fa-solid fa-ranking-star" style="color: var(--yellow-text);"></i>
81
81
  {{ contest?.title || 'Contest' }}, Results
82
82
  </h1>
83
83
  </header>
@@ -200,7 +200,7 @@ function medalColor(rank: number): string {
200
200
  .cpub-podium-author:hover { color: var(--accent); }
201
201
  .cpub-podium-score { font-size: 11px; font-family: var(--font-mono); color: var(--text-faint); margin-bottom: 6px; }
202
202
  .cpub-podium-prize { font-size: 11px; font-family: var(--font-mono); color: var(--accent); display: flex; align-items: center; justify-content: center; gap: 4px; }
203
- .cpub-podium-prize-val { font-weight: 700; color: var(--yellow); }
203
+ .cpub-podium-prize-val { font-weight: 700; color: var(--yellow-text); }
204
204
 
205
205
  /* LEADERBOARD */
206
206
  .cpub-leaderboard { margin-bottom: 32px; }
@@ -215,11 +215,11 @@ function medalColor(rank: number): string {
215
215
  .cpub-lb-top3 { background: var(--surface2); }
216
216
  .cpub-lb-rank { font-family: var(--font-mono); font-weight: 700; display: flex; align-items: center; gap: 6px; }
217
217
  .cpub-lb-score { font-family: var(--font-mono); font-weight: 600; color: var(--accent); }
218
- .cpub-lb-votes { font-family: var(--font-mono); color: var(--red); }
218
+ .cpub-lb-votes { font-family: var(--font-mono); color: var(--red-text); }
219
219
  .cpub-lb-votes i { font-size: 10px; }
220
220
 
221
221
  .cpub-community-choice { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 16px; margin-bottom: 24px; background: var(--red-bg); border: var(--border-width-default) solid var(--red-border); }
222
- .cpub-cc-label { font-family: var(--font-mono); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--red); display: flex; align-items: center; gap: 5px; }
222
+ .cpub-cc-label { font-family: var(--font-mono); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--red-text); display: flex; align-items: center; gap: 5px; }
223
223
  .cpub-cc-title { font-size: 14px; font-weight: 600; color: var(--text); text-decoration: none; }
224
224
  .cpub-cc-title:hover { color: var(--accent); }
225
225
  .cpub-cc-meta { font-size: 11px; color: var(--text-dim); font-family: var(--font-mono); }
@@ -566,13 +566,13 @@ async function deleteItem(id: string, title: string): Promise<void> {
566
566
  }
567
567
 
568
568
  .cpub-dash-action-btn--warn:hover {
569
- color: var(--yellow);
569
+ color: var(--yellow-text);
570
570
  border-color: var(--yellow);
571
571
  background: var(--yellow-bg);
572
572
  }
573
573
 
574
574
  .cpub-dash-action-btn--danger:hover {
575
- color: var(--red);
575
+ color: var(--red-text);
576
576
  border-color: var(--red);
577
577
  background: var(--red-bg);
578
578
  }
@@ -594,7 +594,7 @@ async function deleteItem(id: string, title: string): Promise<void> {
594
594
  .cpub-dash-badge--green {
595
595
  border-color: var(--green-border);
596
596
  background: var(--green-bg);
597
- color: var(--green);
597
+ color: var(--green-text);
598
598
  }
599
599
 
600
600
  .cpub-dash-empty {
@@ -965,13 +965,13 @@ watch(site, (s) => {
965
965
  }
966
966
 
967
967
  .cpub-docs-status-draft {
968
- color: var(--yellow, #d4a017);
968
+ color: var(--yellow-text, #d4a017);
969
969
  background: var(--yellow-bg, rgba(245, 158, 11, 0.08));
970
970
  border: var(--border-width-default) solid var(--yellow-border, rgba(245, 158, 11, 0.25));
971
971
  }
972
972
 
973
973
  .cpub-docs-status-published {
974
- color: var(--green, #2a9d5c);
974
+ color: var(--green-text, #2a9d5c);
975
975
  background: var(--green-bg, rgba(34, 197, 94, 0.08));
976
976
  border: var(--border-width-default) solid var(--green-border, rgba(34, 197, 94, 0.25));
977
977
  }
@@ -1005,7 +1005,7 @@ watch(site, (s) => {
1005
1005
  }
1006
1006
 
1007
1007
  .cpub-docs-unpublish-btn:hover {
1008
- color: var(--yellow, #d4a017);
1008
+ color: var(--yellow-text, #d4a017);
1009
1009
  border-color: var(--yellow, #d4a017);
1010
1010
  }
1011
1011
 
@@ -1268,7 +1268,7 @@ watch(site, (s) => {
1268
1268
  }
1269
1269
 
1270
1270
  .cpub-settings-danger .cpub-settings-section-title {
1271
- color: var(--red, #e04030);
1271
+ color: var(--red-text, #e04030);
1272
1272
  }
1273
1273
 
1274
1274
  .cpub-settings-danger-text {
@@ -1278,7 +1278,7 @@ watch(site, (s) => {
1278
1278
  }
1279
1279
 
1280
1280
  .cpub-btn-danger {
1281
- color: var(--red, #e04030);
1281
+ color: var(--red-text, #e04030);
1282
1282
  border-color: var(--red, #e04030);
1283
1283
  }
1284
1284
 
package/pages/explore.vue CHANGED
@@ -528,7 +528,7 @@ const sortOptions = [
528
528
  align-items: center;
529
529
  justify-content: center;
530
530
  font-size: 14px;
531
- color: var(--green);
531
+ color: var(--green-text);
532
532
  margin-bottom: 10px;
533
533
  }
534
534
 
@@ -324,7 +324,7 @@ useHead({
324
324
  padding: 4px 8px; border: var(--border-width-default) solid var(--border); transition: all 0.1s;
325
325
  }
326
326
  .cpub-post-action-btn:hover:not(:disabled) { color: var(--accent); border-color: var(--accent-border); }
327
- .cpub-post-action-btn.active { color: var(--red); border-color: var(--red); }
327
+ .cpub-post-action-btn.active { color: var(--red-text); border-color: var(--red); }
328
328
  .cpub-post-action-btn:disabled { opacity: 0.5; cursor: default; }
329
329
 
330
330
  /* Reply form */
@@ -321,7 +321,7 @@ function stripHtml(html: string): string {
321
321
  }
322
322
  .cpub-remote-profile__dm-sent {
323
323
  font-size: var(--font-size-sm);
324
- color: var(--green);
324
+ color: var(--green-text);
325
325
  font-weight: 600;
326
326
  margin-bottom: var(--space-4);
327
327
  }
@@ -515,7 +515,7 @@ async function onRefreshGallery(): Promise<void> {
515
515
  cursor: pointer;
516
516
  }
517
517
 
518
- .cpub-post-error { font-size: 0.75rem; color: var(--red); background: var(--red-bg); border: var(--border-width-default) solid var(--red-border); border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; }
518
+ .cpub-post-error { font-size: 0.75rem; color: var(--red-text); background: var(--red-bg); border: var(--border-width-default) solid var(--red-border); border-radius: 8px; padding: 8px 12px; margin-bottom: 12px; }
519
519
 
520
520
  /* Member badge */
521
521
  .cpub-member-badge {
@@ -524,7 +524,7 @@ async function onRefreshGallery(): Promise<void> {
524
524
  gap: 4px;
525
525
  font-size: 0.6875rem;
526
526
  font-weight: 600;
527
- color: var(--green);
527
+ color: var(--green-text);
528
528
  background: var(--green-bg);
529
529
  padding: 4px 12px;
530
530
  border: var(--border-width-default) solid var(--green-border);
@@ -290,7 +290,7 @@ select.cpub-field-input {
290
290
  }
291
291
 
292
292
  .cpub-invite-exhausted {
293
- color: var(--red);
293
+ color: var(--red-text);
294
294
  }
295
295
 
296
296
  .cpub-invite-actions {
@@ -300,7 +300,7 @@ select.cpub-field-input {
300
300
  }
301
301
 
302
302
  .cpub-invite-revoke:hover {
303
- color: var(--red);
303
+ color: var(--red-text);
304
304
  border-color: var(--red);
305
305
  }
306
306