@contentgrowth/content-widget 1.3.1 → 1.3.3

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.
package/dist/styles.css CHANGED
@@ -19,7 +19,7 @@
19
19
  --cg-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
20
20
  --cg-radius: 12px;
21
21
  --cg-transition: all 0.2s ease;
22
-
22
+
23
23
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
24
24
  font-size: 16px;
25
25
  line-height: 1.5;
@@ -166,7 +166,7 @@
166
166
  grid-template-columns: 1fr;
167
167
  grid-template-rows: auto auto;
168
168
  }
169
-
169
+
170
170
  .cg-content-rows .cg-expand-btn {
171
171
  grid-column: 1;
172
172
  grid-row: 1;
@@ -635,7 +635,9 @@ a.cg-card {
635
635
  }
636
636
 
637
637
  @keyframes cg-spin {
638
- to { transform: rotate(360deg); }
638
+ to {
639
+ transform: rotate(360deg);
640
+ }
639
641
  }
640
642
 
641
643
  .cg-loading p,
@@ -968,3 +970,262 @@ a.cg-card {
968
970
  color: var(--cg-text-secondary);
969
971
  font-size: 1.125rem;
970
972
  }
973
+
974
+ /* ===== Featured Card Component ===== */
975
+ .cg-featured-card {
976
+ /* Custom property defaults */
977
+ --cg-card-border-color: #e5e7eb;
978
+ --cg-card-bg: transparent;
979
+ --cg-items-bg: #f3f4f6;
980
+
981
+ display: block;
982
+ text-decoration: none;
983
+ color: inherit;
984
+ border-radius: 12px;
985
+ background: var(--cg-card-bg);
986
+ border: none;
987
+ transition: all 0.2s ease;
988
+ overflow: hidden;
989
+ }
990
+
991
+ /* Border style variants */
992
+ .cg-featured-card.cg-border-line {
993
+ border: 1px solid var(--cg-card-border-color);
994
+ }
995
+
996
+ .cg-featured-card.cg-border-dashed {
997
+ border: 2px dashed var(--cg-card-border-color);
998
+ }
999
+
1000
+ .cg-featured-card:hover {
1001
+ border-color: var(--cg-primary);
1002
+ }
1003
+
1004
+ .cg-featured-card-inner {
1005
+ padding: 2rem 2.5rem;
1006
+ height: 100%;
1007
+ display: flex;
1008
+ flex-direction: column;
1009
+ }
1010
+
1011
+ .cg-featured-card-category {
1012
+ margin-bottom: 1.25rem;
1013
+ }
1014
+
1015
+ .cg-category-badge {
1016
+ display: inline-block;
1017
+ padding: 0.25rem 0.75rem;
1018
+ background: #eff6ff;
1019
+ color: var(--cg-primary);
1020
+ border-radius: 4px;
1021
+ font-size: 0.75rem;
1022
+ font-weight: 600;
1023
+ }
1024
+
1025
+ .cg-featured-card-title {
1026
+ margin: 0 0 1rem;
1027
+ font-size: 1.625rem;
1028
+ font-weight: 800;
1029
+ line-height: 1.25;
1030
+ color: var(--cg-text);
1031
+ letter-spacing: -0.02em;
1032
+ }
1033
+
1034
+ .cg-featured-card-summary {
1035
+ font-size: 1rem;
1036
+ line-height: 1.7;
1037
+ color: var(--cg-text-secondary);
1038
+ margin-bottom: 1.5rem;
1039
+ flex-grow: 1;
1040
+ }
1041
+
1042
+ .cg-featured-card-summary p {
1043
+ margin: 0 0 1rem;
1044
+ }
1045
+
1046
+ .cg-featured-card-summary p:last-child {
1047
+ margin: 0;
1048
+ }
1049
+
1050
+ .cg-featured-card-summary strong,
1051
+ .cg-featured-card-summary b {
1052
+ font-weight: 700;
1053
+ color: var(--cg-text);
1054
+ }
1055
+
1056
+ .cg-featured-card-footer {
1057
+ display: flex;
1058
+ align-items: center;
1059
+ font-size: 0.875rem;
1060
+ font-weight: 500;
1061
+ color: var(--cg-text-secondary);
1062
+ margin-bottom: 1rem;
1063
+ }
1064
+
1065
+ .cg-featured-card-separator {
1066
+ margin: 0 0.5rem;
1067
+ opacity: 0.4;
1068
+ }
1069
+
1070
+ /* CTA: Simple text link style */
1071
+ .cg-featured-card-cta {
1072
+ display: inline-flex;
1073
+ align-items: center;
1074
+ gap: 0.375rem;
1075
+ font-size: 1rem;
1076
+ font-weight: 600;
1077
+ color: var(--cg-primary);
1078
+ text-decoration: none;
1079
+ transition: all 0.2s ease;
1080
+ align-self: flex-start;
1081
+ }
1082
+
1083
+ .cg-featured-card:hover .cg-featured-card-cta {
1084
+ gap: 0.625rem;
1085
+ text-decoration: underline;
1086
+ }
1087
+
1088
+ .cg-featured-card-arrow {
1089
+ transition: transform 0.2s ease;
1090
+ }
1091
+
1092
+ .cg-featured-card:hover .cg-featured-card-arrow {
1093
+ transform: translateX(3px);
1094
+ }
1095
+
1096
+ /* ===== Featured Summary Template Styles ===== */
1097
+
1098
+ /* Intro paragraph styling */
1099
+ .cg-featured-card-summary>p:first-child {
1100
+ font-size: 1rem;
1101
+ line-height: 1.7;
1102
+ }
1103
+
1104
+ /* List & Steps Template - Styled like reference */
1105
+ .cg-featured-card-summary ul,
1106
+ .cg-featured-card-summary ol {
1107
+ margin: 0;
1108
+ padding: 1.25rem 1.5rem;
1109
+ padding-left: 1.5rem;
1110
+ list-style: none;
1111
+ background: var(--cg-items-bg);
1112
+ border-radius: 8px;
1113
+ }
1114
+
1115
+ .cg-featured-card-summary li {
1116
+ margin-bottom: 1.25rem;
1117
+ padding-left: 2.5rem;
1118
+ line-height: 1.5;
1119
+ position: relative;
1120
+ }
1121
+
1122
+ .cg-featured-card-summary li:last-child {
1123
+ margin-bottom: 0;
1124
+ }
1125
+
1126
+ /* Unordered list: simple bullets */
1127
+ .cg-featured-card-summary ul li::before {
1128
+ content: '';
1129
+ position: absolute;
1130
+ left: 0.5rem;
1131
+ top: 0.5rem;
1132
+ width: 6px;
1133
+ height: 6px;
1134
+ background: var(--cg-primary);
1135
+ border-radius: 50%;
1136
+ }
1137
+
1138
+ /* Ordered list: numbered circles like reference */
1139
+ .cg-featured-card-summary ol {
1140
+ counter-reset: item;
1141
+ }
1142
+
1143
+ .cg-featured-card-summary ol li::before {
1144
+ content: counter(item);
1145
+ counter-increment: item;
1146
+ position: absolute;
1147
+ left: 0;
1148
+ top: 0;
1149
+ width: 1.5rem;
1150
+ height: 1.5rem;
1151
+ background: var(--cg-primary);
1152
+ color: white;
1153
+ border-radius: 4px;
1154
+ font-size: 0.75rem;
1155
+ font-weight: 700;
1156
+ display: flex;
1157
+ align-items: center;
1158
+ justify-content: center;
1159
+ }
1160
+
1161
+ /* List item content: bold title + description on next line */
1162
+ .cg-featured-card-summary li strong {
1163
+ display: block;
1164
+ font-size: 0.9375rem;
1165
+ font-weight: 700;
1166
+ color: var(--cg-text);
1167
+ margin-bottom: 0.125rem;
1168
+ }
1169
+
1170
+ /* Quote Template */
1171
+ .cg-featured-card-summary blockquote {
1172
+ margin: 0;
1173
+ padding: 1rem 1.25rem;
1174
+ border-left: 3px solid var(--cg-primary);
1175
+ background: var(--cg-bg-secondary);
1176
+ border-radius: 0 8px 8px 0;
1177
+ font-style: italic;
1178
+ font-size: 1rem;
1179
+ color: var(--cg-text);
1180
+ }
1181
+
1182
+ /* ===== Horizontal Layout ===== */
1183
+ /* Horizontal layout: intro paragraph on left, list/remaining content on right */
1184
+
1185
+ @media (min-width: 768px) {
1186
+ .cg-layout-horizontal .cg-featured-card-inner {
1187
+ padding: 2.5rem 3rem;
1188
+ }
1189
+
1190
+ .cg-layout-horizontal .cg-featured-card-title {
1191
+ font-size: 1.875rem;
1192
+ }
1193
+
1194
+ /* Only the summary content gets the horizontal grid */
1195
+ .cg-layout-horizontal .cg-featured-card-summary {
1196
+ display: grid;
1197
+ grid-template-columns: 1fr 1.25fr;
1198
+ gap: 2.5rem;
1199
+ align-items: stretch;
1200
+ /* Changed from start to stretch for balance */
1201
+ }
1202
+
1203
+ /* First paragraph (intro) stays on left - improved styling */
1204
+ .cg-layout-horizontal .cg-featured-card-summary>p:first-child {
1205
+ grid-column: 1;
1206
+ grid-row: 1;
1207
+ margin: 0;
1208
+ font-size: 1.0625rem;
1209
+ line-height: 1.8;
1210
+ color: var(--cg-text-secondary);
1211
+ display: flex;
1212
+ flex-direction: column;
1213
+ justify-content: center;
1214
+ /* Vertically center the text */
1215
+ }
1216
+
1217
+ /* List/quote goes on right */
1218
+ .cg-layout-horizontal .cg-featured-card-summary ul,
1219
+ .cg-layout-horizontal .cg-featured-card-summary ol,
1220
+ .cg-layout-horizontal .cg-featured-card-summary blockquote {
1221
+ grid-column: 2;
1222
+ grid-row: 1;
1223
+ margin: 0;
1224
+ }
1225
+
1226
+ /* If no list, additional paragraphs go on right */
1227
+ .cg-layout-horizontal .cg-featured-card-summary>p:not(:first-child) {
1228
+ grid-column: 2;
1229
+ margin: 0 0 0.75rem;
1230
+ }
1231
+ }
@@ -12,6 +12,7 @@ export interface Article {
12
12
  authorName: string;
13
13
  publishedAt: number;
14
14
  summary: string | null;
15
+ featuredSummary: string | null;
15
16
  tags: string[];
16
17
  wordCount: number;
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC;IACrF;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAGlC,UAAU,CAAC,EAAE,MAAM;IACnB,QAAQ,CAAC,EAAE,GAAG;gBAFrB,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,QAAQ,CAAC,EAAE,GAAG,YAAA;CAKxB"}
@@ -0,0 +1,132 @@
1
+ <script setup lang="ts">
2
+ import { ref, onMounted, computed } from 'vue';
3
+ import { marked } from 'marked';
4
+ import { ContentGrowthClient } from '../core/client';
5
+ import type { ArticleWithContent } from '../types';
6
+
7
+ const props = withDefaults(defineProps<{
8
+ apiKey: string;
9
+ baseUrl: string;
10
+ tags?: string[];
11
+ category?: string;
12
+ excludeTags?: string[];
13
+ showCategory?: boolean;
14
+ showReadingTime?: boolean;
15
+ linkPattern?: string;
16
+ linkTarget?: string;
17
+ className?: string;
18
+ }>(), {
19
+ tags: () => [],
20
+ excludeTags: () => [],
21
+ showCategory: true,
22
+ showReadingTime: true,
23
+ linkPattern: '/articles/{slug}',
24
+ className: ''
25
+ });
26
+
27
+ const article = ref<ArticleWithContent | null>(null);
28
+ const loading = ref(true);
29
+ const error = ref<string | null>(null);
30
+
31
+ // Generate article URL
32
+ const articleUrl = computed(() => {
33
+ if (!article.value) return '#';
34
+ return props.linkPattern
35
+ .replace('{uuid}', article.value.uuid || '')
36
+ .replace('{slug}', article.value.slug || article.value.uuid || '')
37
+ .replace('{category}', article.value.category || 'uncategorized');
38
+ });
39
+
40
+ // Render featured summary (or fallback to regular summary) as HTML
41
+ const summaryHtml = computed(() => {
42
+ if (!article.value) return '';
43
+ const summaryText = (article.value as any).featuredSummary || article.value.summary;
44
+ if (!summaryText) return '';
45
+ return marked.parse(summaryText, { async: false }) as string;
46
+ });
47
+
48
+ const readingTime = computed(() => {
49
+ if (!article.value) return 0;
50
+ return Math.ceil(article.value.wordCount / 200);
51
+ });
52
+
53
+ onMounted(async () => {
54
+ loading.value = true;
55
+ try {
56
+ const client = new ContentGrowthClient({
57
+ apiKey: props.apiKey,
58
+ baseUrl: props.baseUrl
59
+ });
60
+ const fetchedArticle = await client.getFeaturedArticle({
61
+ tags: props.tags,
62
+ category: props.category,
63
+ excludeTags: props.excludeTags
64
+ });
65
+ article.value = fetchedArticle;
66
+ } catch (err) {
67
+ error.value = err instanceof Error ? err.message : 'Failed to load featured article';
68
+ } finally {
69
+ loading.value = false;
70
+ }
71
+ });
72
+ // Generate layout class
73
+ const layoutClass = computed(() => {
74
+ if (!article.value) return '';
75
+ const layout = (article.value as any).featuredSummaryLayout || 'standard';
76
+ return layout !== 'standard' ? `cg-layout-${layout}` : '';
77
+ });
78
+ </script>
79
+
80
+ <template>
81
+ <div v-if="loading" class="cg-widget cg-loading" :class="className">
82
+ <div class="cg-spinner"></div>
83
+ </div>
84
+
85
+ <div v-else-if="error || !article" class="cg-widget cg-error" :class="className">
86
+ {{ error || 'No featured content found' }}
87
+ </div>
88
+
89
+ <a
90
+ v-else
91
+ :href="articleUrl"
92
+ class="cg-featured-card"
93
+ :class="[className, layoutClass]"
94
+ data-cg-widget="featured-card"
95
+ :target="linkTarget"
96
+ :rel="linkTarget === '_blank' ? 'noopener noreferrer' : undefined"
97
+ >
98
+ <article class="cg-featured-card-inner">
99
+ <!-- Header with category badge -->
100
+ <div v-if="showCategory && article.category" class="cg-featured-card-category">
101
+ <span class="cg-category-badge">{{ article.category }}</span>
102
+ </div>
103
+
104
+ <!-- Title -->
105
+ <h3 class="cg-featured-card-title">{{ article.title }}</h3>
106
+
107
+ <!-- Featured Summary -->
108
+ <div
109
+ v-if="summaryHtml"
110
+ class="cg-featured-card-summary"
111
+ v-html="summaryHtml"
112
+ ></div>
113
+
114
+ <!-- Footer with meta info -->
115
+ <div class="cg-featured-card-footer">
116
+ <span class="cg-featured-card-author">{{ article.authorName }}</span>
117
+ <template v-if="showReadingTime">
118
+ <span class="cg-featured-card-separator">•</span>
119
+ <span class="cg-featured-card-reading-time">{{ readingTime }} min read</span>
120
+ </template>
121
+ </div>
122
+
123
+ <!-- Read more indicator -->
124
+ <div class="cg-featured-card-cta">
125
+ <span>Read article</span>
126
+ <svg class="cg-featured-card-arrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" width="16" height="16">
127
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
128
+ </svg>
129
+ </div>
130
+ </article>
131
+ </a>
132
+ </template>
@@ -55,47 +55,53 @@ onMounted(async () => {
55
55
  </script>
56
56
 
57
57
  <template>
58
- <div v-if="loading" class="cg-widget cg-loading" :class="className">
59
- <div class="cg-spinner"></div>
58
+ <div v-if="loading" class="cg-content-viewer" :class="className">
59
+ <div class="cg-empty-state">
60
+ <p>Loading...</p>
61
+ </div>
60
62
  </div>
61
63
 
62
- <div v-else-if="error || !article" class="cg-widget cg-error" :class="className">
63
- {{ error || 'No featured content found' }}
64
+ <div v-else-if="error || !article" class="cg-content-viewer" :class="className">
65
+ <div class="cg-empty-state">
66
+ <p>{{ error || 'No featured content found' }}</p>
67
+ </div>
64
68
  </div>
65
69
 
66
- <div v-else class="cg-widget cg-content-viewer" :class="className">
67
- <article class="cg-article">
68
- <div v-if="showCategory && article?.category" class="cg-article-category">
69
- {{ article.category }}
70
- </div>
71
-
72
- <h1 class="cg-article-title">{{ article?.title }}</h1>
73
-
74
- <div class="cg-article-meta">
75
- <span class="cg-author">{{ article?.authorName }}</span>
76
- <span v-if="article?.publishedAt" class="cg-date">
77
- {{ new Date(article.publishedAt * 1000).toLocaleDateString() }}
78
- </span>
79
- <span v-if="article?.wordCount" class="cg-read-time">
80
- {{ Math.ceil(article.wordCount / 200) }} min read
81
- </span>
82
- </div>
70
+ <div v-else class="cg-content-viewer" :class="className" data-cg-widget="post">
71
+ <article>
72
+ <header class="cg-content-header">
73
+ <div v-if="showCategory && article.category" class="cg-content-category">
74
+ <span class="cg-category-badge">{{ article.category }}</span>
75
+ </div>
76
+
77
+ <h1 class="cg-content-title">{{ article.title }}</h1>
78
+
79
+ <div v-if="showAiSummary && article.summary" class="cg-ai-summary">
80
+ <div class="cg-ai-summary-header">
81
+ <svg class="cg-ai-summary-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
82
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" />
83
+ </svg>
84
+ <span class="cg-ai-summary-label">AI Generated Summary</span>
85
+ </div>
86
+ <p class="cg-ai-summary-text">{{ article.summary }}</p>
87
+ </div>
88
+
89
+ <div class="cg-content-meta">
90
+ <span class="cg-info-author">{{ article.authorName }}</span>
91
+ <span class="cg-info-separator">•</span>
92
+ <time class="cg-info-date" :datetime="new Date(article.publishedAt * 1000).toISOString()">
93
+ {{ new Date(article.publishedAt * 1000).toLocaleDateString() }}
94
+ </time>
95
+ <span class="cg-info-separator">•</span>
96
+ <span class="cg-info-reading-time">{{ Math.ceil(article.wordCount / 200) }} min read</span>
97
+ </div>
98
+
99
+ <div v-if="showTags && article.tags && article.tags.length > 0" class="cg-content-tags">
100
+ <span v-for="tag in article.tags" :key="tag" class="cg-tag">{{ tag }}</span>
101
+ </div>
102
+ </header>
83
103
 
84
- <div v-if="showAiSummary && article?.summary" class="cg-ai-summary">
85
- <div class="cg-ai-label">AI Summary</div>
86
- <p>{{ article.summary }}</p>
87
- </div>
88
-
89
- <!-- Content -->
90
- <div
91
- class="cg-article-content"
92
- v-html="contentHtml"
93
- ></div>
94
-
95
- <!-- Tags -->
96
- <div v-if="showTags && article?.tags && article.tags.length > 0" class="cg-article-tags">
97
- <span v-for="tag in article.tags" :key="tag" class="cg-tag">#{{ tag }}</span>
98
- </div>
104
+ <div class="cg-content-body" v-html="contentHtml"></div>
99
105
  </article>
100
106
  </div>
101
107
  </template>
@@ -1 +1 @@
1
- .cg-content-list,.cg-content-viewer,.cg-widget{--cg-primary:#3b82f6;--cg-primary-hover:#2563eb;--cg-bg:#ffffff;--cg-bg-secondary:#f9fafb;--cg-text:#1f2937;--cg-text-secondary:#6b7280;--cg-border:#e5e7eb;--cg-shadow:0 1px 3px rgba(0,0,0,0.1);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.1);--cg-radius:12px;--cg-transition:all 0.2s ease;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:1.5;color:var(--cg-text)}.cg-content-list.cg-theme-dark,.cg-content-viewer.cg-theme-dark,.cg-widget[data-theme="dark"]{--cg-primary:#60a5fa;--cg-primary-hover:#3b82f6;--cg-bg:#1f2937;--cg-bg-secondary:#111827;--cg-text:#f9fafb;--cg-text-secondary:#9ca3af;--cg-border:#374151;--cg-shadow:0 1px 3px rgba(0,0,0,0.3);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5)}.cg-content-list *,.cg-content-viewer *,.cg-widget *{box-sizing:border-box;margin:0;padding:0}.cg-content-list,.cg-content-viewer,.cg-widget{width:100%;max-width:100%}.cg-content-list{width:100%}.cg-list-header{display:flex;justify-content:flex-end;margin-bottom:1.5rem}.cg-display-toggle{display:flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);cursor:pointer;transition:var(--cg-transition);font-size:0.875rem}.cg-display-toggle:hover{background:var(--cg-bg);border-color:var(--cg-primary)}.cg-display-toggle svg{width:20px;height:20px}.cg-content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}@media (max-width:768px){.cg-content-grid{grid-template-columns:1fr}}.cg-content-rows{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.cg-content-rows .cg-card{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:0.75rem 1.5rem;align-items:start}.cg-content-rows .cg-card-header{grid-column:1 / 2;grid-row:1;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:0}.cg-content-rows .cg-card-meta{grid-column:1 / 2;grid-row:2;margin-top:0}.cg-content-rows .cg-expand-btn{grid-column:2 / 3;grid-row:1;flex-shrink:0}.cg-content-rows .cg-card-title{margin:0;flex:1}.cg-content-rows .cg-card--compact,.cg-content-rows .cg-card--comfortable,.cg-content-rows .cg-card--spacious{width:100%}@media (max-width:768px){.cg-content-rows .cg-card{grid-template-columns:1fr;grid-template-rows:auto auto}.cg-content-rows .cg-expand-btn{grid-column:1;grid-row:1;justify-self:end}}.cg-card{background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:var(--cg-radius);padding:1.5rem;cursor:pointer;transition:var(--cg-transition);display:block}a.cg-card{text-decoration:none;color:inherit}.cg-card--compact{padding:1rem}.cg-card--compact .cg-card-title{font-size:1rem;line-height:1.4}.cg-card--compact .cg-card-meta{font-size:0.75rem}.cg-card--comfortable{padding:1.5rem}.cg-card--comfortable .cg-card-title{font-size:1.125rem;line-height:1.5}.cg-card--comfortable .cg-card-meta{font-size:0.875rem}.cg-card--spacious{padding:2rem}.cg-card--spacious .cg-card-title{font-size:1.25rem;line-height:1.6}.cg-card--spacious .cg-card-meta{font-size:0.875rem;margin-top:0.75rem}.cg-card:hover{box-shadow:var(--cg-shadow-lg);border-color:var(--cg-primary)}.cg-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.cg-card-title{font-size:1.25rem;font-weight:600;color:var(--cg-text);line-height:1.4;flex:1}.cg-expand-btn{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:8px;color:var(--cg-text-secondary);cursor:pointer;transition:var(--cg-transition)}.cg-expand-btn:hover{background:var(--cg-primary);color:white;border-color:var(--cg-primary)}.cg-card-summary{margin-bottom:1rem;padding:1rem;background:var(--cg-bg-secondary);border-radius:8px}.cg-card-summary p{color:var(--cg-text-secondary);font-size:0.9375rem;line-height:1.6}.cg-card-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}.cg-tag{display:inline-block;padding:0.25rem 0.75rem;background:var(--cg-primary);color:white;border-radius:999px;font-size:0.75rem;font-weight:500}.cg-card-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:0.875rem;color:var(--cg-text-secondary)}.cg-meta-item{display:flex;align-items:center;gap:0.375rem}.cg-meta-item svg{width:14px;height:14px;flex-shrink:0}.cg-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 0}.cg-btn-prev,.cg-btn-next{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:var(--cg-primary);color:white;border:none;border-radius:var(--cg-radius);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-btn-prev:hover:not(:disabled),.cg-btn-next:hover:not(:disabled){background:var(--cg-primary-hover);box-shadow:var(--cg-shadow-lg)}.cg-btn-prev:disabled,.cg-btn-next:disabled{opacity:0.5;cursor:not-allowed}.cg-page-info{color:var(--cg-text-secondary);font-size:0.875rem}.cg-content-viewer{width:100%;background:var(--cg-bg);min-height:400px}.cg-viewer-header{margin-bottom:2rem;background:var(--cg-bg)}.cg-back-btn{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-back-btn:hover{background:var(--cg-bg);border-color:var(--cg-primary);color:var(--cg-primary)}.cg-viewer-content{max-width:800px;margin:0 auto;background:var(--cg-bg);padding:1rem}.cg-content-header{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--cg-border)}.cg-content-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:1.5rem;color:var(--cg-text)}@media (max-width:768px){.cg-content-title{font-size:2rem}}.cg-content-meta{display:flex;flex-wrap:wrap;gap:1.5rem;color:var(--cg-text-secondary);font-size:0.9375rem}.cg-content-body{color:var(--cg-text);line-height:1.75}.cg-content-body h2{font-size:1.875rem;font-weight:700;margin:2rem 0 1rem;color:var(--cg-text)}.cg-content-body h3{font-size:1.5rem;font-weight:600;margin:1.5rem 0 0.75rem;color:var(--cg-text)}.cg-content-body p{margin-bottom:1.25rem}.cg-content-body ul,.cg-content-body ol{margin-bottom:1.25rem;padding-left:1.5rem}.cg-content-body li{margin-bottom:0.5rem}.cg-content-body a{color:var(--cg-primary);text-decoration:underline}.cg-content-body a:hover{color:var(--cg-primary-hover)}.cg-content-body code{padding:0.125rem 0.375rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:4px;font-size:0.875em;font-family:'Courier New',monospace}.cg-content-body pre{padding:1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:8px;overflow-x:auto;margin-bottom:1.25rem}.cg-content-body pre code{padding:0;background:none;border:none}.cg-content-body blockquote{padding-left:1rem;border-left:4px solid var(--cg-primary);margin:1.25rem 0;font-style:italic;color:var(--cg-text-secondary)}.cg-content-body img{max-width:100%;height:auto;border-radius:8px;margin:1.25rem 0}.cg-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;opacity:0;pointer-events:none;transition:opacity 0.3s ease;--cg-primary:#3b82f6;--cg-primary-hover:#2563eb;--cg-bg:#ffffff;--cg-bg-secondary:#f9fafb;--cg-text:#1f2937;--cg-text-secondary:#6b7280;--cg-border:#e5e7eb;--cg-shadow:0 1px 3px rgba(0,0,0,0.1);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.1);--cg-radius:12px;--cg-transition:all 0.2s ease;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}.cg-modal--active{opacity:1;pointer-events:auto}.cg-modal[data-theme="dark"]{--cg-primary:#60a5fa;--cg-primary-hover:#3b82f6;--cg-bg:#1f2937;--cg-bg-secondary:#111827;--cg-text:#f9fafb;--cg-text-secondary:#9ca3af;--cg-border:#374151;--cg-shadow:0 1px 3px rgba(0,0,0,0.3);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5)}.cg-modal-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.8);cursor:pointer}.cg-modal-content{position:relative;max-width:900px;max-height:90vh;margin:5vh auto;background:var(--cg-bg);border-radius:var(--cg-radius);overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5);z-index:10;opacity:1 !important}.cg-modal-close{position:sticky;top:1rem;right:1rem;float:right;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:50%;color:var(--cg-text);cursor:pointer;transition:var(--cg-transition);z-index:10}.cg-modal-close:hover{background:var(--cg-primary);color:white;border-color:var(--cg-primary)}.cg-modal-body{padding:2rem;background:var(--cg-bg);min-height:200px}.cg-loading,.cg-viewer-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-spinner{width:48px;height:48px;border:4px solid var(--cg-border);border-top-color:var(--cg-primary);border-radius:50%;animation:cg-spin 0.8s linear infinite;margin-bottom:1rem}@keyframes cg-spin{to{transform:rotate(360deg)}}.cg-loading p,.cg-viewer-loading p{color:var(--cg-text-secondary)}.cg-error,.cg-viewer-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-error svg,.cg-viewer-error svg{color:#ef4444;margin-bottom:1rem}.cg-error p,.cg-viewer-error p{color:var(--cg-text);margin-bottom:1.5rem}.cg-retry-btn{padding:0.75rem 1.5rem;background:var(--cg-primary);color:white;border:none;border-radius:var(--cg-radius);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-retry-btn:hover{background:var(--cg-primary-hover)}.cg-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-empty-state svg{color:var(--cg-text-secondary);margin-bottom:1rem}.cg-empty-state p{color:var(--cg-text-secondary);margin-top:1rem}.cg-articles-grid.cg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.cg-articles-grid.cg-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}@media (max-width:768px){.cg-articles-grid.cg-grid{grid-template-columns:1fr}}.cg-article-card{background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:var(--cg-radius);overflow:hidden;transition:var(--cg-transition)}.cg-article-card:hover{box-shadow:var(--cg-shadow-lg);transform:translateY(-2px)}.cg-card-link{display:block;text-decoration:none;color:inherit}.cg-card-content{padding:1.5rem}.cg-display-compact .cg-card-content{padding:1rem}.cg-display-spacious .cg-card-content{padding:2rem}.cg-card-category{margin-bottom:0.75rem}.cg-category-badge{display:inline-block;padding:0.25rem 0.75rem;background:var(--cg-primary);color:white;border-radius:9999px;font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em}.cg-card-title{font-size:1.25rem;font-weight:600;line-height:1.4;margin-bottom:0.75rem;color:var(--cg-text)}.cg-display-compact .cg-card-title{font-size:1.1rem}.cg-display-spacious .cg-card-title{font-size:1.5rem}.cg-card-summary{color:var(--cg-text-secondary);line-height:1.6;margin-bottom:1rem;font-size:0.95rem}.cg-card-meta{display:flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--cg-text-secondary);margin-bottom:1rem}.cg-meta-separator{color:var(--cg-border)}.cg-card-tags{display:flex;flex-wrap:wrap;gap:0.5rem}.cg-tag{padding:0.25rem 0.75rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:9999px;font-size:0.75rem;color:var(--cg-text-secondary)}.cg-content-header-back{margin-bottom:2rem}.cg-back-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);text-decoration:none;font-size:0.875rem;transition:var(--cg-transition)}.cg-back-btn:hover{background:var(--cg-bg);border-color:var(--cg-primary);color:var(--cg-primary)}.cg-back-btn svg{width:20px;height:20px}.cg-content-header{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid var(--cg-border)}.cg-content-category{margin-bottom:1rem}.cg-content-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:1rem;color:var(--cg-text)}@media (max-width:768px){.cg-content-title{font-size:2rem}}.cg-content-summary{font-size:1.125rem;line-height:1.6;color:var(--cg-text-secondary);margin-bottom:1.5rem}.cg-ai-summary{background:linear-gradient(to right,#eff6ff,#dbeafe);border-left:4px solid #3b82f6;border-radius:0 var(--cg-radius) var(--cg-radius) 0;padding:1rem 1.25rem;margin-bottom:1.5rem}.cg-theme-dark .cg-ai-summary{background:linear-gradient(to right,#1e3a5f,#1e40af);border-left-color:#60a5fa}.cg-ai-summary-header{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem}.cg-ai-summary-icon{width:1rem;height:1rem;color:#2563eb}.cg-theme-dark .cg-ai-summary-icon{color:#60a5fa}.cg-ai-summary-label{font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:#1d4ed8}.cg-theme-dark .cg-ai-summary-label{color:#93c5fd}.cg-ai-summary-text{font-size:0.875rem;font-style:italic;line-height:1.6;color:#374151}.cg-theme-dark .cg-ai-summary-text{color:#d1d5db}.cg-content-meta{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap;font-size:0.875rem;color:var(--cg-text-secondary)}.cg-info-separator{color:var(--cg-border)}.cg-content-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:1rem}.cg-content-body{max-width:100%;color:var(--cg-text)}.cg-empty-state p{color:var(--cg-text-secondary);font-size:1.125rem}
1
+ .cg-content-list,.cg-content-viewer,.cg-widget{--cg-primary:#3b82f6;--cg-primary-hover:#2563eb;--cg-bg:#ffffff;--cg-bg-secondary:#f9fafb;--cg-text:#1f2937;--cg-text-secondary:#6b7280;--cg-border:#e5e7eb;--cg-shadow:0 1px 3px rgba(0,0,0,0.1);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.1);--cg-radius:12px;--cg-transition:all 0.2s ease;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:1.5;color:var(--cg-text)}.cg-content-list.cg-theme-dark,.cg-content-viewer.cg-theme-dark,.cg-widget[data-theme="dark"]{--cg-primary:#60a5fa;--cg-primary-hover:#3b82f6;--cg-bg:#1f2937;--cg-bg-secondary:#111827;--cg-text:#f9fafb;--cg-text-secondary:#9ca3af;--cg-border:#374151;--cg-shadow:0 1px 3px rgba(0,0,0,0.3);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5)}.cg-content-list *,.cg-content-viewer *,.cg-widget *{box-sizing:border-box;margin:0;padding:0}.cg-content-list,.cg-content-viewer,.cg-widget{width:100%;max-width:100%}.cg-content-list{width:100%}.cg-list-header{display:flex;justify-content:flex-end;margin-bottom:1.5rem}.cg-display-toggle{display:flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);cursor:pointer;transition:var(--cg-transition);font-size:0.875rem}.cg-display-toggle:hover{background:var(--cg-bg);border-color:var(--cg-primary)}.cg-display-toggle svg{width:20px;height:20px}.cg-content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}@media (max-width:768px){.cg-content-grid{grid-template-columns:1fr}}.cg-content-rows{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.cg-content-rows .cg-card{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:0.75rem 1.5rem;align-items:start}.cg-content-rows .cg-card-header{grid-column:1 / 2;grid-row:1;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:0}.cg-content-rows .cg-card-meta{grid-column:1 / 2;grid-row:2;margin-top:0}.cg-content-rows .cg-expand-btn{grid-column:2 / 3;grid-row:1;flex-shrink:0}.cg-content-rows .cg-card-title{margin:0;flex:1}.cg-content-rows .cg-card--compact,.cg-content-rows .cg-card--comfortable,.cg-content-rows .cg-card--spacious{width:100%}@media (max-width:768px){.cg-content-rows .cg-card{grid-template-columns:1fr;grid-template-rows:auto auto}.cg-content-rows .cg-expand-btn{grid-column:1;grid-row:1;justify-self:end}}.cg-card{background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:var(--cg-radius);padding:1.5rem;cursor:pointer;transition:var(--cg-transition);display:block}a.cg-card{text-decoration:none;color:inherit}.cg-card--compact{padding:1rem}.cg-card--compact .cg-card-title{font-size:1rem;line-height:1.4}.cg-card--compact .cg-card-meta{font-size:0.75rem}.cg-card--comfortable{padding:1.5rem}.cg-card--comfortable .cg-card-title{font-size:1.125rem;line-height:1.5}.cg-card--comfortable .cg-card-meta{font-size:0.875rem}.cg-card--spacious{padding:2rem}.cg-card--spacious .cg-card-title{font-size:1.25rem;line-height:1.6}.cg-card--spacious .cg-card-meta{font-size:0.875rem;margin-top:0.75rem}.cg-card:hover{box-shadow:var(--cg-shadow-lg);border-color:var(--cg-primary)}.cg-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.cg-card-title{font-size:1.25rem;font-weight:600;color:var(--cg-text);line-height:1.4;flex:1}.cg-expand-btn{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:8px;color:var(--cg-text-secondary);cursor:pointer;transition:var(--cg-transition)}.cg-expand-btn:hover{background:var(--cg-primary);color:white;border-color:var(--cg-primary)}.cg-card-summary{margin-bottom:1rem;padding:1rem;background:var(--cg-bg-secondary);border-radius:8px}.cg-card-summary p{color:var(--cg-text-secondary);font-size:0.9375rem;line-height:1.6}.cg-card-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}.cg-tag{display:inline-block;padding:0.25rem 0.75rem;background:var(--cg-primary);color:white;border-radius:999px;font-size:0.75rem;font-weight:500}.cg-card-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:0.875rem;color:var(--cg-text-secondary)}.cg-meta-item{display:flex;align-items:center;gap:0.375rem}.cg-meta-item svg{width:14px;height:14px;flex-shrink:0}.cg-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 0}.cg-btn-prev,.cg-btn-next{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:var(--cg-primary);color:white;border:none;border-radius:var(--cg-radius);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-btn-prev:hover:not(:disabled),.cg-btn-next:hover:not(:disabled){background:var(--cg-primary-hover);box-shadow:var(--cg-shadow-lg)}.cg-btn-prev:disabled,.cg-btn-next:disabled{opacity:0.5;cursor:not-allowed}.cg-page-info{color:var(--cg-text-secondary);font-size:0.875rem}.cg-content-viewer{width:100%;background:var(--cg-bg);min-height:400px}.cg-viewer-header{margin-bottom:2rem;background:var(--cg-bg)}.cg-back-btn{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-back-btn:hover{background:var(--cg-bg);border-color:var(--cg-primary);color:var(--cg-primary)}.cg-viewer-content{max-width:800px;margin:0 auto;background:var(--cg-bg);padding:1rem}.cg-content-header{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--cg-border)}.cg-content-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:1.5rem;color:var(--cg-text)}@media (max-width:768px){.cg-content-title{font-size:2rem}}.cg-content-meta{display:flex;flex-wrap:wrap;gap:1.5rem;color:var(--cg-text-secondary);font-size:0.9375rem}.cg-content-body{color:var(--cg-text);line-height:1.75}.cg-content-body h2{font-size:1.875rem;font-weight:700;margin:2rem 0 1rem;color:var(--cg-text)}.cg-content-body h3{font-size:1.5rem;font-weight:600;margin:1.5rem 0 0.75rem;color:var(--cg-text)}.cg-content-body p{margin-bottom:1.25rem}.cg-content-body ul,.cg-content-body ol{margin-bottom:1.25rem;padding-left:1.5rem}.cg-content-body li{margin-bottom:0.5rem}.cg-content-body a{color:var(--cg-primary);text-decoration:underline}.cg-content-body a:hover{color:var(--cg-primary-hover)}.cg-content-body code{padding:0.125rem 0.375rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:4px;font-size:0.875em;font-family:'Courier New',monospace}.cg-content-body pre{padding:1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:8px;overflow-x:auto;margin-bottom:1.25rem}.cg-content-body pre code{padding:0;background:none;border:none}.cg-content-body blockquote{padding-left:1rem;border-left:4px solid var(--cg-primary);margin:1.25rem 0;font-style:italic;color:var(--cg-text-secondary)}.cg-content-body img{max-width:100%;height:auto;border-radius:8px;margin:1.25rem 0}.cg-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;opacity:0;pointer-events:none;transition:opacity 0.3s ease;--cg-primary:#3b82f6;--cg-primary-hover:#2563eb;--cg-bg:#ffffff;--cg-bg-secondary:#f9fafb;--cg-text:#1f2937;--cg-text-secondary:#6b7280;--cg-border:#e5e7eb;--cg-shadow:0 1px 3px rgba(0,0,0,0.1);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.1);--cg-radius:12px;--cg-transition:all 0.2s ease;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}.cg-modal--active{opacity:1;pointer-events:auto}.cg-modal[data-theme="dark"]{--cg-primary:#60a5fa;--cg-primary-hover:#3b82f6;--cg-bg:#1f2937;--cg-bg-secondary:#111827;--cg-text:#f9fafb;--cg-text-secondary:#9ca3af;--cg-border:#374151;--cg-shadow:0 1px 3px rgba(0,0,0,0.3);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5)}.cg-modal-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.8);cursor:pointer}.cg-modal-content{position:relative;max-width:900px;max-height:90vh;margin:5vh auto;background:var(--cg-bg);border-radius:var(--cg-radius);overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5);z-index:10;opacity:1 !important}.cg-modal-close{position:sticky;top:1rem;right:1rem;float:right;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:50%;color:var(--cg-text);cursor:pointer;transition:var(--cg-transition);z-index:10}.cg-modal-close:hover{background:var(--cg-primary);color:white;border-color:var(--cg-primary)}.cg-modal-body{padding:2rem;background:var(--cg-bg);min-height:200px}.cg-loading,.cg-viewer-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-spinner{width:48px;height:48px;border:4px solid var(--cg-border);border-top-color:var(--cg-primary);border-radius:50%;animation:cg-spin 0.8s linear infinite;margin-bottom:1rem}@keyframes cg-spin{to{transform:rotate(360deg)}}.cg-loading p,.cg-viewer-loading p{color:var(--cg-text-secondary)}.cg-error,.cg-viewer-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-error svg,.cg-viewer-error svg{color:#ef4444;margin-bottom:1rem}.cg-error p,.cg-viewer-error p{color:var(--cg-text);margin-bottom:1.5rem}.cg-retry-btn{padding:0.75rem 1.5rem;background:var(--cg-primary);color:white;border:none;border-radius:var(--cg-radius);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-retry-btn:hover{background:var(--cg-primary-hover)}.cg-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-empty-state svg{color:var(--cg-text-secondary);margin-bottom:1rem}.cg-empty-state p{color:var(--cg-text-secondary);margin-top:1rem}.cg-articles-grid.cg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.cg-articles-grid.cg-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}@media (max-width:768px){.cg-articles-grid.cg-grid{grid-template-columns:1fr}}.cg-article-card{background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:var(--cg-radius);overflow:hidden;transition:var(--cg-transition)}.cg-article-card:hover{box-shadow:var(--cg-shadow-lg);transform:translateY(-2px)}.cg-card-link{display:block;text-decoration:none;color:inherit}.cg-card-content{padding:1.5rem}.cg-display-compact .cg-card-content{padding:1rem}.cg-display-spacious .cg-card-content{padding:2rem}.cg-card-category{margin-bottom:0.75rem}.cg-category-badge{display:inline-block;padding:0.25rem 0.75rem;background:var(--cg-primary);color:white;border-radius:9999px;font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em}.cg-card-title{font-size:1.25rem;font-weight:600;line-height:1.4;margin-bottom:0.75rem;color:var(--cg-text)}.cg-display-compact .cg-card-title{font-size:1.1rem}.cg-display-spacious .cg-card-title{font-size:1.5rem}.cg-card-summary{color:var(--cg-text-secondary);line-height:1.6;margin-bottom:1rem;font-size:0.95rem}.cg-card-meta{display:flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--cg-text-secondary);margin-bottom:1rem}.cg-meta-separator{color:var(--cg-border)}.cg-card-tags{display:flex;flex-wrap:wrap;gap:0.5rem}.cg-tag{padding:0.25rem 0.75rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:9999px;font-size:0.75rem;color:var(--cg-text-secondary)}.cg-content-header-back{margin-bottom:2rem}.cg-back-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);text-decoration:none;font-size:0.875rem;transition:var(--cg-transition)}.cg-back-btn:hover{background:var(--cg-bg);border-color:var(--cg-primary);color:var(--cg-primary)}.cg-back-btn svg{width:20px;height:20px}.cg-content-header{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid var(--cg-border)}.cg-content-category{margin-bottom:1rem}.cg-content-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:1rem;color:var(--cg-text)}@media (max-width:768px){.cg-content-title{font-size:2rem}}.cg-content-summary{font-size:1.125rem;line-height:1.6;color:var(--cg-text-secondary);margin-bottom:1.5rem}.cg-ai-summary{background:linear-gradient(to right,#eff6ff,#dbeafe);border-left:4px solid #3b82f6;border-radius:0 var(--cg-radius) var(--cg-radius) 0;padding:1rem 1.25rem;margin-bottom:1.5rem}.cg-theme-dark .cg-ai-summary{background:linear-gradient(to right,#1e3a5f,#1e40af);border-left-color:#60a5fa}.cg-ai-summary-header{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem}.cg-ai-summary-icon{width:1rem;height:1rem;color:#2563eb}.cg-theme-dark .cg-ai-summary-icon{color:#60a5fa}.cg-ai-summary-label{font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:#1d4ed8}.cg-theme-dark .cg-ai-summary-label{color:#93c5fd}.cg-ai-summary-text{font-size:0.875rem;font-style:italic;line-height:1.6;color:#374151}.cg-theme-dark .cg-ai-summary-text{color:#d1d5db}.cg-content-meta{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap;font-size:0.875rem;color:var(--cg-text-secondary)}.cg-info-separator{color:var(--cg-border)}.cg-content-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:1rem}.cg-content-body{max-width:100%;color:var(--cg-text)}.cg-empty-state p{color:var(--cg-text-secondary);font-size:1.125rem}.cg-featured-card{--cg-card-border-color:#e5e7eb;--cg-card-bg:transparent;--cg-items-bg:#f3f4f6;display:block;text-decoration:none;color:inherit;border-radius:12px;background:var(--cg-card-bg);border:none;transition:all 0.2s ease;overflow:hidden}.cg-featured-card.cg-border-line{border:1px solid var(--cg-card-border-color)}.cg-featured-card.cg-border-dashed{border:2px dashed var(--cg-card-border-color)}.cg-featured-card:hover{border-color:var(--cg-primary)}.cg-featured-card-inner{padding:2rem 2.5rem;height:100%;display:flex;flex-direction:column}.cg-featured-card-category{margin-bottom:1.25rem}.cg-category-badge{display:inline-block;padding:0.25rem 0.75rem;background:#eff6ff;color:var(--cg-primary);border-radius:4px;font-size:0.75rem;font-weight:600}.cg-featured-card-title{margin:0 0 1rem;font-size:1.625rem;font-weight:800;line-height:1.25;color:var(--cg-text);letter-spacing:-0.02em}.cg-featured-card-summary{font-size:1rem;line-height:1.7;color:var(--cg-text-secondary);margin-bottom:1.5rem;flex-grow:1}.cg-featured-card-summary p{margin:0 0 1rem}.cg-featured-card-summary p:last-child{margin:0}.cg-featured-card-summary strong,.cg-featured-card-summary b{font-weight:700;color:var(--cg-text)}.cg-featured-card-footer{display:flex;align-items:center;font-size:0.875rem;font-weight:500;color:var(--cg-text-secondary);margin-bottom:1rem}.cg-featured-card-separator{margin:0 0.5rem;opacity:0.4}.cg-featured-card-cta{display:inline-flex;align-items:center;gap:0.375rem;font-size:1rem;font-weight:600;color:var(--cg-primary);text-decoration:none;transition:all 0.2s ease;align-self:flex-start}.cg-featured-card:hover .cg-featured-card-cta{gap:0.625rem;text-decoration:underline}.cg-featured-card-arrow{transition:transform 0.2s ease}.cg-featured-card:hover .cg-featured-card-arrow{transform:translateX(3px)}.cg-featured-card-summary>p:first-child{font-size:1rem;line-height:1.7}.cg-featured-card-summary ul,.cg-featured-card-summary ol{margin:0;padding:1.25rem 1.5rem;padding-left:1.5rem;list-style:none;background:var(--cg-items-bg);border-radius:8px}.cg-featured-card-summary li{margin-bottom:1.25rem;padding-left:2.5rem;line-height:1.5;position:relative}.cg-featured-card-summary li:last-child{margin-bottom:0}.cg-featured-card-summary ul li::before{content:'';position:absolute;left:0.5rem;top:0.5rem;width:6px;height:6px;background:var(--cg-primary);border-radius:50%}.cg-featured-card-summary ol{counter-reset:item}.cg-featured-card-summary ol li::before{content:counter(item);counter-increment:item;position:absolute;left:0;top:0;width:1.5rem;height:1.5rem;background:var(--cg-primary);color:white;border-radius:4px;font-size:0.75rem;font-weight:700;display:flex;align-items:center;justify-content:center}.cg-featured-card-summary li strong{display:block;font-size:0.9375rem;font-weight:700;color:var(--cg-text);margin-bottom:0.125rem}.cg-featured-card-summary blockquote{margin:0;padding:1rem 1.25rem;border-left:3px solid var(--cg-primary);background:var(--cg-bg-secondary);border-radius:0 8px 8px 0;font-style:italic;font-size:1rem;color:var(--cg-text)}@media (min-width:768px){.cg-layout-horizontal .cg-featured-card-inner{padding:2.5rem 3rem}.cg-layout-horizontal .cg-featured-card-title{font-size:1.875rem}.cg-layout-horizontal .cg-featured-card-summary{display:grid;grid-template-columns:1fr 1.25fr;gap:2.5rem;align-items:stretch}.cg-layout-horizontal .cg-featured-card-summary>p:first-child{grid-column:1;grid-row:1;margin:0;font-size:1.0625rem;line-height:1.8;color:var(--cg-text-secondary);display:flex;flex-direction:column;justify-content:center}.cg-layout-horizontal .cg-featured-card-summary ul,.cg-layout-horizontal .cg-featured-card-summary ol,.cg-layout-horizontal .cg-featured-card-summary blockquote{grid-column:2;grid-row:1;margin:0}.cg-layout-horizontal .cg-featured-card-summary>p:not(:first-child){grid-column:2;margin:0 0 0.75rem}}