@contentgrowth/content-widget 1.1.0 → 1.1.2

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.
@@ -0,0 +1,970 @@
1
+ /**
2
+ * Content Growth Widget Styles
3
+ * Includes light and dark themes
4
+ */
5
+
6
+ /* ===== CSS Variables ===== */
7
+ .cg-content-list,
8
+ .cg-content-viewer,
9
+ .cg-widget {
10
+ /* Light theme (default) */
11
+ --cg-primary: #3b82f6;
12
+ --cg-primary-hover: #2563eb;
13
+ --cg-bg: #ffffff;
14
+ --cg-bg-secondary: #f9fafb;
15
+ --cg-text: #1f2937;
16
+ --cg-text-secondary: #6b7280;
17
+ --cg-border: #e5e7eb;
18
+ --cg-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
19
+ --cg-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
20
+ --cg-radius: 12px;
21
+ --cg-transition: all 0.2s ease;
22
+
23
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
24
+ font-size: 16px;
25
+ line-height: 1.5;
26
+ color: var(--cg-text);
27
+ }
28
+
29
+ /* Dark theme */
30
+ .cg-content-list.cg-theme-dark,
31
+ .cg-content-viewer.cg-theme-dark,
32
+ .cg-widget[data-theme="dark"] {
33
+ --cg-primary: #60a5fa;
34
+ --cg-primary-hover: #3b82f6;
35
+ --cg-bg: #1f2937;
36
+ --cg-bg-secondary: #111827;
37
+ --cg-text: #f9fafb;
38
+ --cg-text-secondary: #9ca3af;
39
+ --cg-border: #374151;
40
+ --cg-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
41
+ --cg-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5);
42
+ }
43
+
44
+ /* ===== Reset & Base ===== */
45
+ .cg-content-list *,
46
+ .cg-content-viewer *,
47
+ .cg-widget * {
48
+ box-sizing: border-box;
49
+ margin: 0;
50
+ padding: 0;
51
+ }
52
+
53
+ .cg-content-list,
54
+ .cg-content-viewer,
55
+ .cg-widget {
56
+ width: 100%;
57
+ max-width: 100%;
58
+ }
59
+
60
+ /* ===== Content List ===== */
61
+ .cg-content-list {
62
+ width: 100%;
63
+ }
64
+
65
+ .cg-list-header {
66
+ display: flex;
67
+ justify-content: flex-end;
68
+ margin-bottom: 1.5rem;
69
+ }
70
+
71
+ .cg-display-toggle {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 0.5rem;
75
+ padding: 0.5rem 1rem;
76
+ background: var(--cg-bg-secondary);
77
+ border: 1px solid var(--cg-border);
78
+ border-radius: var(--cg-radius);
79
+ color: var(--cg-text);
80
+ cursor: pointer;
81
+ transition: var(--cg-transition);
82
+ font-size: 0.875rem;
83
+ }
84
+
85
+ .cg-display-toggle:hover {
86
+ background: var(--cg-bg);
87
+ border-color: var(--cg-primary);
88
+ }
89
+
90
+ .cg-display-toggle svg {
91
+ width: 20px;
92
+ height: 20px;
93
+ }
94
+
95
+ /* ===== Content Grid (Cards Layout) ===== */
96
+ .cg-content-grid {
97
+ display: grid;
98
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
99
+ gap: 1.5rem;
100
+ margin-bottom: 2rem;
101
+ }
102
+
103
+ @media (max-width: 768px) {
104
+ .cg-content-grid {
105
+ grid-template-columns: 1fr;
106
+ }
107
+ }
108
+
109
+ /* ===== Content Rows (List Layout) ===== */
110
+ .cg-content-rows {
111
+ display: flex;
112
+ flex-direction: column;
113
+ gap: 1rem;
114
+ margin-bottom: 2rem;
115
+ }
116
+
117
+ /* Rows: Card becomes a horizontal flex container */
118
+ .cg-content-rows .cg-card {
119
+ display: grid;
120
+ grid-template-columns: 1fr auto;
121
+ grid-template-rows: auto auto;
122
+ gap: 0.75rem 1.5rem;
123
+ align-items: start;
124
+ }
125
+
126
+ /* Rows: Header (title + expand button) spans first row */
127
+ .cg-content-rows .cg-card-header {
128
+ grid-column: 1 / 2;
129
+ grid-row: 1;
130
+ display: flex;
131
+ justify-content: space-between;
132
+ align-items: flex-start;
133
+ gap: 1rem;
134
+ margin-bottom: 0;
135
+ }
136
+
137
+ /* Rows: Meta info in second row */
138
+ .cg-content-rows .cg-card-meta {
139
+ grid-column: 1 / 2;
140
+ grid-row: 2;
141
+ margin-top: 0;
142
+ }
143
+
144
+ /* Rows: Expand button stays in header */
145
+ .cg-content-rows .cg-expand-btn {
146
+ grid-column: 2 / 3;
147
+ grid-row: 1;
148
+ flex-shrink: 0;
149
+ }
150
+
151
+ /* Rows: Title takes available space */
152
+ .cg-content-rows .cg-card-title {
153
+ margin: 0;
154
+ flex: 1;
155
+ }
156
+
157
+ /* Rows layout: make cards full width */
158
+ .cg-content-rows .cg-card--compact,
159
+ .cg-content-rows .cg-card--comfortable,
160
+ .cg-content-rows .cg-card--spacious {
161
+ width: 100%;
162
+ }
163
+
164
+ @media (max-width: 768px) {
165
+ .cg-content-rows .cg-card {
166
+ grid-template-columns: 1fr;
167
+ grid-template-rows: auto auto;
168
+ }
169
+
170
+ .cg-content-rows .cg-expand-btn {
171
+ grid-column: 1;
172
+ grid-row: 1;
173
+ justify-self: end;
174
+ }
175
+ }
176
+
177
+ /* ===== Content Card ===== */
178
+ .cg-card {
179
+ background: var(--cg-bg);
180
+ border: 1px solid var(--cg-border);
181
+ border-radius: var(--cg-radius);
182
+ padding: 1.5rem;
183
+ cursor: pointer;
184
+ transition: var(--cg-transition);
185
+ display: block;
186
+ }
187
+
188
+ /* External mode: Remove link styling */
189
+ a.cg-card {
190
+ text-decoration: none;
191
+ color: inherit;
192
+ }
193
+
194
+ /* Display mode variations */
195
+ .cg-card--compact {
196
+ padding: 1rem;
197
+ }
198
+
199
+ .cg-card--compact .cg-card-title {
200
+ font-size: 1rem;
201
+ line-height: 1.4;
202
+ }
203
+
204
+ .cg-card--compact .cg-card-meta {
205
+ font-size: 0.75rem;
206
+ }
207
+
208
+ .cg-card--comfortable {
209
+ padding: 1.5rem;
210
+ }
211
+
212
+ .cg-card--comfortable .cg-card-title {
213
+ font-size: 1.125rem;
214
+ line-height: 1.5;
215
+ }
216
+
217
+ .cg-card--comfortable .cg-card-meta {
218
+ font-size: 0.875rem;
219
+ }
220
+
221
+ .cg-card--spacious {
222
+ padding: 2rem;
223
+ }
224
+
225
+ .cg-card--spacious .cg-card-title {
226
+ font-size: 1.25rem;
227
+ line-height: 1.6;
228
+ }
229
+
230
+ .cg-card--spacious .cg-card-meta {
231
+ font-size: 0.875rem;
232
+ margin-top: 0.75rem;
233
+ }
234
+
235
+ .cg-card:hover {
236
+ box-shadow: var(--cg-shadow-lg);
237
+ border-color: var(--cg-primary);
238
+ }
239
+
240
+ .cg-card-header {
241
+ display: flex;
242
+ justify-content: space-between;
243
+ align-items: flex-start;
244
+ gap: 1rem;
245
+ margin-bottom: 1rem;
246
+ }
247
+
248
+ .cg-card-title {
249
+ font-size: 1.25rem;
250
+ font-weight: 600;
251
+ color: var(--cg-text);
252
+ line-height: 1.4;
253
+ flex: 1;
254
+ }
255
+
256
+ .cg-expand-btn {
257
+ flex-shrink: 0;
258
+ width: 32px;
259
+ height: 32px;
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: center;
263
+ background: var(--cg-bg-secondary);
264
+ border: 1px solid var(--cg-border);
265
+ border-radius: 8px;
266
+ color: var(--cg-text-secondary);
267
+ cursor: pointer;
268
+ transition: var(--cg-transition);
269
+ }
270
+
271
+ .cg-expand-btn:hover {
272
+ background: var(--cg-primary);
273
+ color: white;
274
+ border-color: var(--cg-primary);
275
+ }
276
+
277
+ .cg-card-summary {
278
+ margin-bottom: 1rem;
279
+ padding: 1rem;
280
+ background: var(--cg-bg-secondary);
281
+ border-radius: 8px;
282
+ }
283
+
284
+ .cg-card-summary p {
285
+ color: var(--cg-text-secondary);
286
+ font-size: 0.9375rem;
287
+ line-height: 1.6;
288
+ }
289
+
290
+ .cg-card-tags {
291
+ display: flex;
292
+ flex-wrap: wrap;
293
+ gap: 0.5rem;
294
+ margin-bottom: 1rem;
295
+ }
296
+
297
+ .cg-tag {
298
+ display: inline-block;
299
+ padding: 0.25rem 0.75rem;
300
+ background: var(--cg-primary);
301
+ color: white;
302
+ border-radius: 999px;
303
+ font-size: 0.75rem;
304
+ font-weight: 500;
305
+ }
306
+
307
+ .cg-card-meta {
308
+ display: flex;
309
+ flex-wrap: wrap;
310
+ gap: 1rem;
311
+ font-size: 0.875rem;
312
+ color: var(--cg-text-secondary);
313
+ }
314
+
315
+ .cg-meta-item {
316
+ display: flex;
317
+ align-items: center;
318
+ gap: 0.375rem;
319
+ }
320
+
321
+ .cg-meta-item svg {
322
+ width: 14px;
323
+ height: 14px;
324
+ flex-shrink: 0;
325
+ }
326
+
327
+ /* ===== Pagination ===== */
328
+ .cg-pagination {
329
+ display: flex;
330
+ align-items: center;
331
+ justify-content: center;
332
+ gap: 1rem;
333
+ padding: 1.5rem 0;
334
+ }
335
+
336
+ .cg-btn-prev,
337
+ .cg-btn-next {
338
+ display: flex;
339
+ align-items: center;
340
+ gap: 0.5rem;
341
+ padding: 0.75rem 1.5rem;
342
+ background: var(--cg-primary);
343
+ color: white;
344
+ border: none;
345
+ border-radius: var(--cg-radius);
346
+ font-weight: 500;
347
+ cursor: pointer;
348
+ transition: var(--cg-transition);
349
+ }
350
+
351
+ .cg-btn-prev:hover:not(:disabled),
352
+ .cg-btn-next:hover:not(:disabled) {
353
+ background: var(--cg-primary-hover);
354
+ box-shadow: var(--cg-shadow-lg);
355
+ }
356
+
357
+ .cg-btn-prev:disabled,
358
+ .cg-btn-next:disabled {
359
+ opacity: 0.5;
360
+ cursor: not-allowed;
361
+ }
362
+
363
+ .cg-page-info {
364
+ color: var(--cg-text-secondary);
365
+ font-size: 0.875rem;
366
+ }
367
+
368
+ /* ===== Content Viewer ===== */
369
+ .cg-content-viewer {
370
+ width: 100%;
371
+ background: var(--cg-bg);
372
+ min-height: 400px;
373
+ }
374
+
375
+ .cg-viewer-header {
376
+ margin-bottom: 2rem;
377
+ background: var(--cg-bg);
378
+ }
379
+
380
+ .cg-back-btn {
381
+ display: flex;
382
+ align-items: center;
383
+ gap: 0.5rem;
384
+ padding: 0.75rem 1.5rem;
385
+ background: var(--cg-bg-secondary);
386
+ border: 1px solid var(--cg-border);
387
+ border-radius: var(--cg-radius);
388
+ color: var(--cg-text);
389
+ font-weight: 500;
390
+ cursor: pointer;
391
+ transition: var(--cg-transition);
392
+ }
393
+
394
+ .cg-back-btn:hover {
395
+ background: var(--cg-bg);
396
+ border-color: var(--cg-primary);
397
+ color: var(--cg-primary);
398
+ }
399
+
400
+ .cg-viewer-content {
401
+ max-width: 800px;
402
+ margin: 0 auto;
403
+ background: var(--cg-bg);
404
+ padding: 1rem;
405
+ }
406
+
407
+ .cg-content-header {
408
+ margin-bottom: 2rem;
409
+ padding-bottom: 2rem;
410
+ border-bottom: 1px solid var(--cg-border);
411
+ }
412
+
413
+ .cg-content-title {
414
+ font-size: 2.5rem;
415
+ font-weight: 700;
416
+ line-height: 1.2;
417
+ margin-bottom: 1.5rem;
418
+ color: var(--cg-text);
419
+ }
420
+
421
+ @media (max-width: 768px) {
422
+ .cg-content-title {
423
+ font-size: 2rem;
424
+ }
425
+ }
426
+
427
+ .cg-content-meta {
428
+ display: flex;
429
+ flex-wrap: wrap;
430
+ gap: 1.5rem;
431
+ color: var(--cg-text-secondary);
432
+ font-size: 0.9375rem;
433
+ }
434
+
435
+ .cg-content-body {
436
+ color: var(--cg-text);
437
+ line-height: 1.75;
438
+ }
439
+
440
+ /* Markdown content styling */
441
+ .cg-content-body h2 {
442
+ font-size: 1.875rem;
443
+ font-weight: 700;
444
+ margin: 2rem 0 1rem;
445
+ color: var(--cg-text);
446
+ }
447
+
448
+ .cg-content-body h3 {
449
+ font-size: 1.5rem;
450
+ font-weight: 600;
451
+ margin: 1.5rem 0 0.75rem;
452
+ color: var(--cg-text);
453
+ }
454
+
455
+ .cg-content-body p {
456
+ margin-bottom: 1.25rem;
457
+ }
458
+
459
+ .cg-content-body ul,
460
+ .cg-content-body ol {
461
+ margin-bottom: 1.25rem;
462
+ padding-left: 1.5rem;
463
+ }
464
+
465
+ .cg-content-body li {
466
+ margin-bottom: 0.5rem;
467
+ }
468
+
469
+ .cg-content-body a {
470
+ color: var(--cg-primary);
471
+ text-decoration: underline;
472
+ }
473
+
474
+ .cg-content-body a:hover {
475
+ color: var(--cg-primary-hover);
476
+ }
477
+
478
+ .cg-content-body code {
479
+ padding: 0.125rem 0.375rem;
480
+ background: var(--cg-bg-secondary);
481
+ border: 1px solid var(--cg-border);
482
+ border-radius: 4px;
483
+ font-size: 0.875em;
484
+ font-family: 'Courier New', monospace;
485
+ }
486
+
487
+ .cg-content-body pre {
488
+ padding: 1rem;
489
+ background: var(--cg-bg-secondary);
490
+ border: 1px solid var(--cg-border);
491
+ border-radius: 8px;
492
+ overflow-x: auto;
493
+ margin-bottom: 1.25rem;
494
+ }
495
+
496
+ .cg-content-body pre code {
497
+ padding: 0;
498
+ background: none;
499
+ border: none;
500
+ }
501
+
502
+ .cg-content-body blockquote {
503
+ padding-left: 1rem;
504
+ border-left: 4px solid var(--cg-primary);
505
+ margin: 1.25rem 0;
506
+ font-style: italic;
507
+ color: var(--cg-text-secondary);
508
+ }
509
+
510
+ .cg-content-body img {
511
+ max-width: 100%;
512
+ height: auto;
513
+ border-radius: 8px;
514
+ margin: 1.25rem 0;
515
+ }
516
+
517
+ /* ===== Modal ===== */
518
+ .cg-modal {
519
+ position: fixed;
520
+ top: 0;
521
+ left: 0;
522
+ right: 0;
523
+ bottom: 0;
524
+ z-index: 9999;
525
+ opacity: 0;
526
+ pointer-events: none;
527
+ transition: opacity 0.3s ease;
528
+ /* Define CSS variables for modal (since it's outside .cg-widget) */
529
+ --cg-primary: #3b82f6;
530
+ --cg-primary-hover: #2563eb;
531
+ --cg-bg: #ffffff;
532
+ --cg-bg-secondary: #f9fafb;
533
+ --cg-text: #1f2937;
534
+ --cg-text-secondary: #6b7280;
535
+ --cg-border: #e5e7eb;
536
+ --cg-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
537
+ --cg-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
538
+ --cg-radius: 12px;
539
+ --cg-transition: all 0.2s ease;
540
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
541
+ }
542
+
543
+ .cg-modal--active {
544
+ opacity: 1;
545
+ pointer-events: auto;
546
+ }
547
+
548
+ /* Dark theme for modal */
549
+ .cg-modal[data-theme="dark"] {
550
+ --cg-primary: #60a5fa;
551
+ --cg-primary-hover: #3b82f6;
552
+ --cg-bg: #1f2937;
553
+ --cg-bg-secondary: #111827;
554
+ --cg-text: #f9fafb;
555
+ --cg-text-secondary: #9ca3af;
556
+ --cg-border: #374151;
557
+ --cg-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
558
+ --cg-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5);
559
+ }
560
+
561
+ .cg-modal-overlay {
562
+ position: absolute;
563
+ top: 0;
564
+ left: 0;
565
+ right: 0;
566
+ bottom: 0;
567
+ background: rgba(0, 0, 0, 0.8);
568
+ cursor: pointer;
569
+ }
570
+
571
+ .cg-modal-content {
572
+ position: relative;
573
+ max-width: 900px;
574
+ max-height: 90vh;
575
+ margin: 5vh auto;
576
+ background: var(--cg-bg);
577
+ border-radius: var(--cg-radius);
578
+ overflow-y: auto;
579
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
580
+ z-index: 10;
581
+ /* Ensure solid background */
582
+ opacity: 1 !important;
583
+ }
584
+
585
+ .cg-modal-close {
586
+ position: sticky;
587
+ top: 1rem;
588
+ right: 1rem;
589
+ float: right;
590
+ width: 40px;
591
+ height: 40px;
592
+ display: flex;
593
+ align-items: center;
594
+ justify-content: center;
595
+ background: var(--cg-bg);
596
+ border: 1px solid var(--cg-border);
597
+ border-radius: 50%;
598
+ color: var(--cg-text);
599
+ cursor: pointer;
600
+ transition: var(--cg-transition);
601
+ z-index: 10;
602
+ }
603
+
604
+ .cg-modal-close:hover {
605
+ background: var(--cg-primary);
606
+ color: white;
607
+ border-color: var(--cg-primary);
608
+ }
609
+
610
+ .cg-modal-body {
611
+ padding: 2rem;
612
+ background: var(--cg-bg);
613
+ min-height: 200px;
614
+ }
615
+
616
+ /* ===== Loading State ===== */
617
+ .cg-loading,
618
+ .cg-viewer-loading {
619
+ display: flex;
620
+ flex-direction: column;
621
+ align-items: center;
622
+ justify-content: center;
623
+ padding: 4rem 2rem;
624
+ text-align: center;
625
+ }
626
+
627
+ .cg-spinner {
628
+ width: 48px;
629
+ height: 48px;
630
+ border: 4px solid var(--cg-border);
631
+ border-top-color: var(--cg-primary);
632
+ border-radius: 50%;
633
+ animation: cg-spin 0.8s linear infinite;
634
+ margin-bottom: 1rem;
635
+ }
636
+
637
+ @keyframes cg-spin {
638
+ to { transform: rotate(360deg); }
639
+ }
640
+
641
+ .cg-loading p,
642
+ .cg-viewer-loading p {
643
+ color: var(--cg-text-secondary);
644
+ }
645
+
646
+ /* ===== Error State ===== */
647
+ .cg-error,
648
+ .cg-viewer-error {
649
+ display: flex;
650
+ flex-direction: column;
651
+ align-items: center;
652
+ justify-content: center;
653
+ padding: 4rem 2rem;
654
+ text-align: center;
655
+ }
656
+
657
+ .cg-error svg,
658
+ .cg-viewer-error svg {
659
+ color: #ef4444;
660
+ margin-bottom: 1rem;
661
+ }
662
+
663
+ .cg-error p,
664
+ .cg-viewer-error p {
665
+ color: var(--cg-text);
666
+ margin-bottom: 1.5rem;
667
+ }
668
+
669
+ .cg-retry-btn {
670
+ padding: 0.75rem 1.5rem;
671
+ background: var(--cg-primary);
672
+ color: white;
673
+ border: none;
674
+ border-radius: var(--cg-radius);
675
+ font-weight: 500;
676
+ cursor: pointer;
677
+ transition: var(--cg-transition);
678
+ }
679
+
680
+ .cg-retry-btn:hover {
681
+ background: var(--cg-primary-hover);
682
+ }
683
+
684
+ /* ===== Empty State ===== */
685
+ .cg-empty-state {
686
+ display: flex;
687
+ flex-direction: column;
688
+ align-items: center;
689
+ justify-content: center;
690
+ padding: 4rem 2rem;
691
+ text-align: center;
692
+ }
693
+
694
+ .cg-empty-state svg {
695
+ color: var(--cg-text-secondary);
696
+ margin-bottom: 1rem;
697
+ }
698
+
699
+ .cg-empty-state p {
700
+ color: var(--cg-text-secondary);
701
+ margin-top: 1rem;
702
+ }
703
+
704
+ /* ===== Astro Components Specific Styles ===== */
705
+
706
+ /* Articles Grid for ContentList */
707
+ .cg-articles-grid.cg-grid {
708
+ display: grid;
709
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
710
+ gap: 1.5rem;
711
+ margin-bottom: 2rem;
712
+ }
713
+
714
+ .cg-articles-grid.cg-list {
715
+ display: flex;
716
+ flex-direction: column;
717
+ gap: 1rem;
718
+ margin-bottom: 2rem;
719
+ }
720
+
721
+ @media (max-width: 768px) {
722
+ .cg-articles-grid.cg-grid {
723
+ grid-template-columns: 1fr;
724
+ }
725
+ }
726
+
727
+ /* Article Card */
728
+ .cg-article-card {
729
+ background: var(--cg-bg);
730
+ border: 1px solid var(--cg-border);
731
+ border-radius: var(--cg-radius);
732
+ overflow: hidden;
733
+ transition: var(--cg-transition);
734
+ }
735
+
736
+ .cg-article-card:hover {
737
+ box-shadow: var(--cg-shadow-lg);
738
+ transform: translateY(-2px);
739
+ }
740
+
741
+ .cg-card-link {
742
+ display: block;
743
+ text-decoration: none;
744
+ color: inherit;
745
+ }
746
+
747
+ .cg-card-content {
748
+ padding: 1.5rem;
749
+ }
750
+
751
+ /* Display modes for cards */
752
+ .cg-display-compact .cg-card-content {
753
+ padding: 1rem;
754
+ }
755
+
756
+ .cg-display-spacious .cg-card-content {
757
+ padding: 2rem;
758
+ }
759
+
760
+ .cg-card-category {
761
+ margin-bottom: 0.75rem;
762
+ }
763
+
764
+ .cg-category-badge {
765
+ display: inline-block;
766
+ padding: 0.25rem 0.75rem;
767
+ background: var(--cg-primary);
768
+ color: white;
769
+ border-radius: 9999px;
770
+ font-size: 0.75rem;
771
+ font-weight: 500;
772
+ text-transform: uppercase;
773
+ letter-spacing: 0.05em;
774
+ }
775
+
776
+ .cg-card-title {
777
+ font-size: 1.25rem;
778
+ font-weight: 600;
779
+ line-height: 1.4;
780
+ margin-bottom: 0.75rem;
781
+ color: var(--cg-text);
782
+ }
783
+
784
+ .cg-display-compact .cg-card-title {
785
+ font-size: 1.1rem;
786
+ }
787
+
788
+ .cg-display-spacious .cg-card-title {
789
+ font-size: 1.5rem;
790
+ }
791
+
792
+ .cg-card-summary {
793
+ color: var(--cg-text-secondary);
794
+ line-height: 1.6;
795
+ margin-bottom: 1rem;
796
+ font-size: 0.95rem;
797
+ }
798
+
799
+ .cg-card-meta {
800
+ display: flex;
801
+ align-items: center;
802
+ gap: 0.5rem;
803
+ font-size: 0.875rem;
804
+ color: var(--cg-text-secondary);
805
+ margin-bottom: 1rem;
806
+ }
807
+
808
+ .cg-meta-separator {
809
+ color: var(--cg-border);
810
+ }
811
+
812
+ .cg-card-tags {
813
+ display: flex;
814
+ flex-wrap: wrap;
815
+ gap: 0.5rem;
816
+ }
817
+
818
+ .cg-tag {
819
+ padding: 0.25rem 0.75rem;
820
+ background: var(--cg-bg-secondary);
821
+ border: 1px solid var(--cg-border);
822
+ border-radius: 9999px;
823
+ font-size: 0.75rem;
824
+ color: var(--cg-text-secondary);
825
+ }
826
+
827
+ /* ContentViewer Styles */
828
+ .cg-content-header-back {
829
+ margin-bottom: 2rem;
830
+ }
831
+
832
+ .cg-back-btn {
833
+ display: inline-flex;
834
+ align-items: center;
835
+ gap: 0.5rem;
836
+ padding: 0.5rem 1rem;
837
+ background: var(--cg-bg-secondary);
838
+ border: 1px solid var(--cg-border);
839
+ border-radius: var(--cg-radius);
840
+ color: var(--cg-text);
841
+ text-decoration: none;
842
+ font-size: 0.875rem;
843
+ transition: var(--cg-transition);
844
+ }
845
+
846
+ .cg-back-btn:hover {
847
+ background: var(--cg-bg);
848
+ border-color: var(--cg-primary);
849
+ color: var(--cg-primary);
850
+ }
851
+
852
+ .cg-back-btn svg {
853
+ width: 20px;
854
+ height: 20px;
855
+ }
856
+
857
+ .cg-content-header {
858
+ margin-bottom: 3rem;
859
+ padding-bottom: 2rem;
860
+ border-bottom: 1px solid var(--cg-border);
861
+ }
862
+
863
+ .cg-content-category {
864
+ margin-bottom: 1rem;
865
+ }
866
+
867
+ .cg-content-title {
868
+ font-size: 2.5rem;
869
+ font-weight: 700;
870
+ line-height: 1.2;
871
+ margin-bottom: 1rem;
872
+ color: var(--cg-text);
873
+ }
874
+
875
+ @media (max-width: 768px) {
876
+ .cg-content-title {
877
+ font-size: 2rem;
878
+ }
879
+ }
880
+
881
+ .cg-content-summary {
882
+ font-size: 1.125rem;
883
+ line-height: 1.6;
884
+ color: var(--cg-text-secondary);
885
+ margin-bottom: 1.5rem;
886
+ }
887
+
888
+ /* AI Summary Box - Special styling for AI-generated summaries */
889
+ .cg-ai-summary {
890
+ background: linear-gradient(to right, #eff6ff, #dbeafe);
891
+ border-left: 4px solid #3b82f6;
892
+ border-radius: 0 var(--cg-radius) var(--cg-radius) 0;
893
+ padding: 1rem 1.25rem;
894
+ margin-bottom: 1.5rem;
895
+ }
896
+
897
+ .cg-theme-dark .cg-ai-summary {
898
+ background: linear-gradient(to right, #1e3a5f, #1e40af);
899
+ border-left-color: #60a5fa;
900
+ }
901
+
902
+ .cg-ai-summary-header {
903
+ display: flex;
904
+ align-items: center;
905
+ gap: 0.5rem;
906
+ margin-bottom: 0.5rem;
907
+ }
908
+
909
+ .cg-ai-summary-icon {
910
+ width: 1rem;
911
+ height: 1rem;
912
+ color: #2563eb;
913
+ }
914
+
915
+ .cg-theme-dark .cg-ai-summary-icon {
916
+ color: #60a5fa;
917
+ }
918
+
919
+ .cg-ai-summary-label {
920
+ font-size: 0.75rem;
921
+ font-weight: 600;
922
+ text-transform: uppercase;
923
+ letter-spacing: 0.05em;
924
+ color: #1d4ed8;
925
+ }
926
+
927
+ .cg-theme-dark .cg-ai-summary-label {
928
+ color: #93c5fd;
929
+ }
930
+
931
+ .cg-ai-summary-text {
932
+ font-size: 0.875rem;
933
+ font-style: italic;
934
+ line-height: 1.6;
935
+ color: #374151;
936
+ }
937
+
938
+ .cg-theme-dark .cg-ai-summary-text {
939
+ color: #d1d5db;
940
+ }
941
+
942
+ .cg-content-meta {
943
+ display: flex;
944
+ align-items: center;
945
+ gap: 0.5rem;
946
+ flex-wrap: wrap;
947
+ font-size: 0.875rem;
948
+ color: var(--cg-text-secondary);
949
+ }
950
+
951
+ .cg-info-separator {
952
+ color: var(--cg-border);
953
+ }
954
+
955
+ .cg-content-tags {
956
+ display: flex;
957
+ flex-wrap: wrap;
958
+ gap: 0.5rem;
959
+ margin-top: 1rem;
960
+ }
961
+
962
+ .cg-content-body {
963
+ max-width: 100%;
964
+ color: var(--cg-text);
965
+ }
966
+
967
+ .cg-empty-state p {
968
+ color: var(--cg-text-secondary);
969
+ font-size: 1.125rem;
970
+ }