@the-syllabus/analysis-renderers 0.2.0

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 (128) hide show
  1. package/dist/cells/RelationshipCardCell.d.ts +10 -0
  2. package/dist/cells/RelationshipCardCell.d.ts.map +1 -0
  3. package/dist/cells/RelationshipCardCell.js +91 -0
  4. package/dist/cells/RelationshipCardCell.js.map +1 -0
  5. package/dist/cells/TacticCardCell.d.ts +12 -0
  6. package/dist/cells/TacticCardCell.d.ts.map +1 -0
  7. package/dist/cells/TacticCardCell.js +77 -0
  8. package/dist/cells/TacticCardCell.js.map +1 -0
  9. package/dist/cells/TemplateCardCell.d.ts +29 -0
  10. package/dist/cells/TemplateCardCell.d.ts.map +1 -0
  11. package/dist/cells/TemplateCardCell.js +202 -0
  12. package/dist/cells/TemplateCardCell.js.map +1 -0
  13. package/dist/cells/index.d.ts +15 -0
  14. package/dist/cells/index.d.ts.map +1 -0
  15. package/dist/cells/index.js +85 -0
  16. package/dist/cells/index.js.map +1 -0
  17. package/dist/components/ConditionCards.d.ts +18 -0
  18. package/dist/components/ConditionCards.d.ts.map +1 -0
  19. package/dist/components/ConditionCards.js +28 -0
  20. package/dist/components/ConditionCards.js.map +1 -0
  21. package/dist/components/EvidenceTrail.d.ts +54 -0
  22. package/dist/components/EvidenceTrail.d.ts.map +1 -0
  23. package/dist/components/EvidenceTrail.js +98 -0
  24. package/dist/components/EvidenceTrail.js.map +1 -0
  25. package/dist/dispatch/SubRendererDispatch.d.ts +39 -0
  26. package/dist/dispatch/SubRendererDispatch.d.ts.map +1 -0
  27. package/dist/dispatch/SubRendererDispatch.js +153 -0
  28. package/dist/dispatch/SubRendererDispatch.js.map +1 -0
  29. package/dist/hooks/useProseExtraction.d.ts +38 -0
  30. package/dist/hooks/useProseExtraction.d.ts.map +1 -0
  31. package/dist/hooks/useProseExtraction.js +93 -0
  32. package/dist/hooks/useProseExtraction.js.map +1 -0
  33. package/dist/index.d.ts +32 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +38 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/provenance/ProvenanceSectionIcon.d.ts +15 -0
  38. package/dist/provenance/ProvenanceSectionIcon.d.ts.map +1 -0
  39. package/dist/provenance/ProvenanceSectionIcon.js +11 -0
  40. package/dist/provenance/ProvenanceSectionIcon.js.map +1 -0
  41. package/dist/renderers/AccordionRenderer.d.ts +29 -0
  42. package/dist/renderers/AccordionRenderer.d.ts.map +1 -0
  43. package/dist/renderers/AccordionRenderer.js +315 -0
  44. package/dist/renderers/AccordionRenderer.js.map +1 -0
  45. package/dist/renderers/CardGridRenderer.d.ts +24 -0
  46. package/dist/renderers/CardGridRenderer.d.ts.map +1 -0
  47. package/dist/renderers/CardGridRenderer.js +321 -0
  48. package/dist/renderers/CardGridRenderer.js.map +1 -0
  49. package/dist/renderers/CardRenderer.d.ts +27 -0
  50. package/dist/renderers/CardRenderer.d.ts.map +1 -0
  51. package/dist/renderers/CardRenderer.js +337 -0
  52. package/dist/renderers/CardRenderer.js.map +1 -0
  53. package/dist/renderers/IdeaEvolutionRenderer.d.ts +16 -0
  54. package/dist/renderers/IdeaEvolutionRenderer.d.ts.map +1 -0
  55. package/dist/renderers/IdeaEvolutionRenderer.js +187 -0
  56. package/dist/renderers/IdeaEvolutionRenderer.js.map +1 -0
  57. package/dist/renderers/ProseRenderer.d.ts +10 -0
  58. package/dist/renderers/ProseRenderer.d.ts.map +1 -0
  59. package/dist/renderers/ProseRenderer.js +42 -0
  60. package/dist/renderers/ProseRenderer.js.map +1 -0
  61. package/dist/renderers/RawJsonRenderer.d.ts +8 -0
  62. package/dist/renderers/RawJsonRenderer.d.ts.map +1 -0
  63. package/dist/renderers/RawJsonRenderer.js +17 -0
  64. package/dist/renderers/RawJsonRenderer.js.map +1 -0
  65. package/dist/renderers/StatSummaryRenderer.d.ts +12 -0
  66. package/dist/renderers/StatSummaryRenderer.d.ts.map +1 -0
  67. package/dist/renderers/StatSummaryRenderer.js +93 -0
  68. package/dist/renderers/StatSummaryRenderer.js.map +1 -0
  69. package/dist/renderers/SynthesisRenderer.d.ts +15 -0
  70. package/dist/renderers/SynthesisRenderer.d.ts.map +1 -0
  71. package/dist/renderers/SynthesisRenderer.js +60 -0
  72. package/dist/renderers/SynthesisRenderer.js.map +1 -0
  73. package/dist/renderers/TableRenderer.d.ts +19 -0
  74. package/dist/renderers/TableRenderer.d.ts.map +1 -0
  75. package/dist/renderers/TableRenderer.js +273 -0
  76. package/dist/renderers/TableRenderer.js.map +1 -0
  77. package/dist/styles/accordion.css +376 -0
  78. package/dist/styles/index.css +5 -0
  79. package/dist/styles/renderers.css +1049 -0
  80. package/dist/sub-renderers/SubRenderers.d.ts +73 -0
  81. package/dist/sub-renderers/SubRenderers.d.ts.map +1 -0
  82. package/dist/sub-renderers/SubRenderers.js +2462 -0
  83. package/dist/sub-renderers/SubRenderers.js.map +1 -0
  84. package/dist/tokens/DesignTokenContext.d.ts +40 -0
  85. package/dist/tokens/DesignTokenContext.d.ts.map +1 -0
  86. package/dist/tokens/DesignTokenContext.js +408 -0
  87. package/dist/tokens/DesignTokenContext.js.map +1 -0
  88. package/dist/types/designTokens.d.ts +220 -0
  89. package/dist/types/designTokens.d.ts.map +1 -0
  90. package/dist/types/designTokens.js +8 -0
  91. package/dist/types/designTokens.js.map +1 -0
  92. package/dist/types/index.d.ts +32 -0
  93. package/dist/types/index.d.ts.map +1 -0
  94. package/dist/types/index.js +5 -0
  95. package/dist/types/index.js.map +1 -0
  96. package/dist/types/styles.d.ts +38 -0
  97. package/dist/types/styles.d.ts.map +1 -0
  98. package/dist/types/styles.js +14 -0
  99. package/dist/types/styles.js.map +1 -0
  100. package/dist/utils/tokenFlattener.d.ts +14 -0
  101. package/dist/utils/tokenFlattener.d.ts.map +1 -0
  102. package/dist/utils/tokenFlattener.js +56 -0
  103. package/dist/utils/tokenFlattener.js.map +1 -0
  104. package/package.json +31 -0
  105. package/src/cells/TemplateCardCell.tsx +439 -0
  106. package/src/cells/index.ts +98 -0
  107. package/src/components/ConditionCards.tsx +109 -0
  108. package/src/components/EvidenceTrail.tsx +203 -0
  109. package/src/dispatch/SubRendererDispatch.tsx +282 -0
  110. package/src/hooks/useProseExtraction.ts +125 -0
  111. package/src/index.ts +82 -0
  112. package/src/provenance/ProvenanceSectionIcon.tsx +19 -0
  113. package/src/renderers/AccordionRenderer.tsx +609 -0
  114. package/src/renderers/CardGridRenderer.tsx +608 -0
  115. package/src/renderers/CardRenderer.tsx +517 -0
  116. package/src/renderers/ProseRenderer.tsx +85 -0
  117. package/src/renderers/RawJsonRenderer.tsx +37 -0
  118. package/src/renderers/StatSummaryRenderer.tsx +182 -0
  119. package/src/renderers/TableRenderer.tsx +470 -0
  120. package/src/styles/accordion.css +376 -0
  121. package/src/styles/index.css +5 -0
  122. package/src/styles/renderers.css +1049 -0
  123. package/src/sub-renderers/SubRenderers.tsx +3487 -0
  124. package/src/tokens/DesignTokenContext.tsx +502 -0
  125. package/src/types/designTokens.ts +236 -0
  126. package/src/types/index.ts +53 -0
  127. package/src/types/styles.ts +44 -0
  128. package/src/utils/tokenFlattener.ts +64 -0
@@ -0,0 +1,1049 @@
1
+ /* Renderer CSS — shared styles for ar-* and gen-* renderer components */
2
+
3
+ .gen-empty {
4
+ color: var(--color-text-faint);
5
+ font-style: italic;
6
+ text-align: center;
7
+ padding: var(--space-xl) 0;
8
+ margin: 0;
9
+ font-family: var(--font-sans);
10
+ }
11
+
12
+ .ar-dist-summary {
13
+ background: var(--color-surface-elev);
14
+ border: 1px solid var(--color-border-light);
15
+ border-radius: var(--radius-lg);
16
+ padding: 20px 24px;
17
+ margin-bottom: var(--space-lg);
18
+ }
19
+
20
+ .gen-summary-header {
21
+ display: flex;
22
+ align-items: flex-start;
23
+ justify-content: space-between;
24
+ gap: 16px;
25
+ margin-bottom: 0;
26
+ }
27
+
28
+ .gen-summary-stat {
29
+ margin-bottom: 0;
30
+ }
31
+
32
+ .gen-stat-label {
33
+ display: block;
34
+ font-size: 0.6875rem;
35
+ line-height: 1;
36
+ color: var(--color-text-muted);
37
+ text-transform: capitalize;
38
+ letter-spacing: 0.02em;
39
+ font-weight: var(--weight-medium);
40
+ font-family: var(--font-sans);
41
+ margin-bottom: 8px;
42
+ }
43
+
44
+ .gen-stat-value {
45
+ display: block;
46
+ font-size: 1.375rem;
47
+ font-weight: var(--weight-bold);
48
+ color: var(--color-text);
49
+ font-family: var(--font-display);
50
+ line-height: 1.3;
51
+ margin-bottom: 0;
52
+ }
53
+
54
+ .gen-summary-counts {
55
+ text-align: right;
56
+ flex-shrink: 0;
57
+ }
58
+
59
+ .gen-summary-count-big {
60
+ display: block;
61
+ font-size: 1.75rem;
62
+ font-weight: var(--weight-bold);
63
+ font-family: var(--font-display);
64
+ color: var(--color-text);
65
+ line-height: 1;
66
+ letter-spacing: -0.02em;
67
+ }
68
+
69
+ .gen-summary-count-label {
70
+ display: block;
71
+ font-size: 0.65rem;
72
+ font-weight: var(--weight-medium);
73
+ font-family: var(--font-sans);
74
+ color: var(--color-text-faint);
75
+ margin-top: 4px;
76
+ text-transform: uppercase;
77
+ letter-spacing: 0.04em;
78
+ }
79
+
80
+ .gen-dist-bars {
81
+ margin-top: 16px;
82
+ padding-top: 14px;
83
+ border-top: 1px solid var(--color-border-light);
84
+ display: grid;
85
+ grid-template-columns: repeat(2, 1fr);
86
+ gap: 1px 24px;
87
+ }
88
+
89
+ .gen-dist-bar-row {
90
+ display: flex;
91
+ align-items: center;
92
+ gap: 8px;
93
+ padding: 6px 8px;
94
+ border: none;
95
+ background: none;
96
+ cursor: pointer;
97
+ border-radius: 4px;
98
+ transition: background 0.15s;
99
+ }
100
+
101
+ .gen-dist-bar-row:hover {
102
+ background: rgba(0, 0, 0, 0.03);
103
+ }
104
+
105
+ .gen-dist-bar-row--active {
106
+ background: rgba(0, 0, 0, 0.04);
107
+ }
108
+
109
+ .gen-dist-bar-label {
110
+ font-size: 0.7rem;
111
+ font-weight: 500;
112
+ font-family: var(--font-sans);
113
+ color: var(--color-text-muted);
114
+ white-space: nowrap;
115
+ min-width: 130px;
116
+ text-align: left;
117
+ }
118
+
119
+ .gen-dist-bar-row--active .gen-dist-bar-label {
120
+ color: var(--color-text);
121
+ font-weight: 600;
122
+ }
123
+
124
+ .gen-dist-bar-track {
125
+ flex: 1;
126
+ height: 8px;
127
+ background: rgba(0, 0, 0, 0.06);
128
+ border-radius: 4px;
129
+ overflow: hidden;
130
+ min-width: 40px;
131
+ }
132
+
133
+ .gen-dist-bar-fill {
134
+ display: block;
135
+ height: 100%;
136
+ border-radius: 4px;
137
+ transition: width 0.3s ease, background 0.2s, opacity 0.15s;
138
+ min-width: 4px;
139
+ }
140
+
141
+ .gen-dist-bar-row:hover .gen-dist-bar-fill {
142
+ opacity: 0.85 !important;
143
+ }
144
+
145
+ .gen-dist-bar-count {
146
+ font-size: 0.75rem;
147
+ font-weight: 700;
148
+ font-family: var(--font-sans);
149
+ min-width: 16px;
150
+ text-align: right;
151
+ }
152
+
153
+ .gen-dist-bar-severity {
154
+ font-size: 0.55rem;
155
+ font-weight: 600;
156
+ font-family: var(--font-sans);
157
+ color: #dc2626;
158
+ text-transform: uppercase;
159
+ letter-spacing: 0.04em;
160
+ white-space: nowrap;
161
+ }
162
+
163
+ .gen-dist-bar-clear {
164
+ grid-column: 1 / -1;
165
+ padding: 4px 0;
166
+ border: none;
167
+ background: none;
168
+ font-size: 0.65rem;
169
+ font-weight: 600;
170
+ font-family: var(--font-sans);
171
+ color: var(--color-accent);
172
+ cursor: pointer;
173
+ text-align: left;
174
+ margin-top: 4px;
175
+ }
176
+
177
+ .gen-dist-bar-clear:hover {
178
+ text-decoration: underline;
179
+ }
180
+
181
+ .gen-pattern-narrative-wrap {
182
+ position: relative;
183
+ max-height: 68px;
184
+ overflow: hidden;
185
+ margin-top: var(--space-md);
186
+ border-top: 1px solid var(--color-border-light);
187
+ padding-top: 14px;
188
+ }
189
+
190
+ .gen-pattern-narrative-wrap::after {
191
+ content: '';
192
+ position: absolute;
193
+ bottom: 0;
194
+ left: 0;
195
+ right: 0;
196
+ height: 36px;
197
+ background: linear-gradient(to bottom, transparent, var(--color-surface-elev));
198
+ pointer-events: none;
199
+ }
200
+
201
+ .gen-pattern-narrative-wrap--expanded {
202
+ max-height: none;
203
+ }
204
+
205
+ .gen-pattern-narrative-wrap--expanded::after {
206
+ display: none;
207
+ }
208
+
209
+ .gen-pattern-narrative {
210
+ font-size: var(--type-caption);
211
+ font-family: var(--font-body);
212
+ color: var(--color-text-muted);
213
+ line-height: 1.7;
214
+ margin: 0;
215
+ max-width: 72ch;
216
+ }
217
+
218
+ .gen-narrative-toggle {
219
+ display: inline-block;
220
+ margin-top: 8px;
221
+ padding: 0;
222
+ border: none;
223
+ background: none;
224
+ font-size: var(--type-label);
225
+ font-weight: var(--weight-semibold);
226
+ font-family: var(--font-sans);
227
+ color: var(--color-accent);
228
+ cursor: pointer;
229
+ }
230
+
231
+ .gen-narrative-toggle:hover {
232
+ color: var(--color-accent-hover);
233
+ text-decoration: underline;
234
+ }
235
+
236
+ .gen-tactics-grid {
237
+ display: flex;
238
+ flex-direction: column;
239
+ gap: 12px;
240
+ }
241
+
242
+ .ar-card-item {
243
+ background: var(--color-surface);
244
+ border: 1px solid rgba(0, 0, 0, 0.06);
245
+ border-radius: 6px;
246
+ padding: 0;
247
+ overflow: hidden;
248
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 0 0 1px rgba(0, 0, 0, 0.02);
249
+ transition: box-shadow 0.3s ease, transform 0.3s ease;
250
+ }
251
+
252
+ .ar-card-item:hover {
253
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07), 0 0 0 1px rgba(0, 0, 0, 0.04);
254
+ transform: translateY(-1px);
255
+ }
256
+
257
+ .ar-card-item--major {
258
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.03);
259
+ }
260
+
261
+ .ar-card-item--major .ar-card-badge-row {
262
+ background: linear-gradient(135deg, rgba(220, 38, 38, 0.03) 0%, transparent 60%);
263
+ }
264
+
265
+ .ar-card-item--moderate {
266
+ /* default styling is fine */
267
+ }
268
+
269
+ .ar-card-item--minor .ar-card-heading {
270
+ font-size: 1.05rem;
271
+ }
272
+
273
+ .ar-card-item--minor .ar-card-prose {
274
+ color: var(--color-text-muted);
275
+ }
276
+
277
+ .ar-grid-card:has(> .ar-card-content > .ar-card-item) {
278
+ border: none !important;
279
+ padding: 0 !important;
280
+ box-shadow: none !important;
281
+ background: transparent !important;
282
+ border-left: none !important;
283
+ }
284
+
285
+ .ar-grid-card:has(> .ar-card-content > .ar-card-item) > .ar-card-content {
286
+ padding: 0 !important;
287
+ }
288
+
289
+ .ar-grid-card:has(> .ar-card-content > .ar-card-item) > .ar-card-type-indicator,
290
+ .ar-grid-card:has(> .ar-card-content > .ar-card-item) > .card-cell-expand-hint {
291
+ display: none;
292
+ }
293
+
294
+ .ar-grid-cards:has(.ar-card-item),
295
+ .ar-grid-cards--variable:has(.ar-card-item) {
296
+ grid-template-columns: repeat(auto-fill, minmax(460px, 1fr));
297
+ align-items: start;
298
+ }
299
+
300
+ .ar-grid-card--hero:has(.ar-card-item) {
301
+ grid-column: auto !important;
302
+ padding: 0 !important;
303
+ border-left-width: 0 !important;
304
+ }
305
+
306
+ .ar-card-badge-row {
307
+ display: flex;
308
+ align-items: center;
309
+ gap: 6px;
310
+ padding: 16px 24px 8px;
311
+ flex-wrap: wrap;
312
+ }
313
+
314
+ .ar-card-type-badge {
315
+ padding: 3px 10px;
316
+ border-radius: 3px;
317
+ font-size: 0.65rem;
318
+ font-weight: 650;
319
+ font-family: var(--font-sans);
320
+ border: 1px solid;
321
+ letter-spacing: 0.03em;
322
+ text-transform: capitalize;
323
+ }
324
+
325
+ .ar-severity-badge {
326
+ padding: 2px 8px;
327
+ border-radius: 3px;
328
+ font-size: 0.575rem;
329
+ font-weight: 700;
330
+ font-family: var(--font-sans);
331
+ text-transform: uppercase;
332
+ letter-spacing: 0.06em;
333
+ }
334
+
335
+ .ar-severity-badge--major {
336
+ font-weight: 800;
337
+ }
338
+
339
+ .ar-card-heading {
340
+ font-family: var(--font-display);
341
+ font-size: 1.2rem;
342
+ font-weight: 700;
343
+ color: var(--color-text);
344
+ margin: 0;
345
+ padding: 4px 24px 8px;
346
+ line-height: 1.3;
347
+ letter-spacing: -0.01em;
348
+ }
349
+
350
+ .ar-card-prose {
351
+ font-size: 0.875rem;
352
+ font-family: var(--font-body);
353
+ color: var(--color-text-secondary, var(--color-text));
354
+ margin: 0;
355
+ padding: 0 24px 16px;
356
+ line-height: 1.6;
357
+ max-width: 62ch;
358
+ }
359
+
360
+ .ar-card-prose--subdued {
361
+ color: var(--color-text-muted);
362
+ font-size: 0.825rem;
363
+ }
364
+
365
+ .ar-card-section-label {
366
+ display: flex;
367
+ align-items: center;
368
+ gap: 8px;
369
+ font-size: 0.6rem;
370
+ font-weight: 600;
371
+ font-family: var(--font-sans);
372
+ color: var(--color-text-faint);
373
+ text-transform: uppercase;
374
+ letter-spacing: 0.08em;
375
+ margin-bottom: 8px;
376
+ transition: color 0.15s;
377
+ }
378
+
379
+ .ar-card-section-label::after {
380
+ content: '';
381
+ flex: 1;
382
+ height: 1px;
383
+ background: var(--color-border-light);
384
+ opacity: 0.5;
385
+ }
386
+
387
+ .ar-card-chip-list {
388
+ padding: 0 24px 18px;
389
+ }
390
+
391
+ .gen-idea-tags {
392
+ display: flex;
393
+ flex-wrap: wrap;
394
+ gap: 5px;
395
+ }
396
+
397
+ .gen-idea-tag {
398
+ background: var(--color-surface-alt);
399
+ color: var(--color-text-muted);
400
+ padding: 3px 10px;
401
+ border-radius: 3px;
402
+ font-size: 0.675rem;
403
+ font-family: var(--font-mono);
404
+ letter-spacing: -0.01em;
405
+ }
406
+
407
+ .gen-idea-tag--linked {
408
+ background: rgba(59, 130, 246, 0.05);
409
+ color: #3b71aa;
410
+ border: 1px solid rgba(59, 130, 246, 0.12);
411
+ cursor: default;
412
+ transition: all 0.2s ease;
413
+ }
414
+
415
+ .gen-idea-tag--linked:hover {
416
+ background: rgba(59, 130, 246, 0.08);
417
+ border-color: rgba(59, 130, 246, 0.2);
418
+ }
419
+
420
+ .ar-card-assessment {
421
+ font-size: 0.85rem;
422
+ font-family: var(--font-body);
423
+ color: var(--color-text);
424
+ margin: 0;
425
+ padding: 10px 14px;
426
+ background: rgba(0, 0, 0, 0.02);
427
+ border-radius: 4px;
428
+ line-height: 1.55;
429
+ border-left: 2px solid var(--color-text-muted);
430
+ max-width: 62ch;
431
+ }
432
+
433
+ .gen-evidence-badge {
434
+ display: inline-block;
435
+ font-size: 0.6875rem;
436
+ font-family: var(--font-sans);
437
+ padding: 1px 6px;
438
+ border-radius: 3px;
439
+ text-transform: capitalize;
440
+ }
441
+
442
+ .gen-evidence-badge.strength-strong {
443
+ background: var(--color-success-bg);
444
+ color: var(--color-success-text);
445
+ }
446
+
447
+ .gen-evidence-badge.strength-moderate {
448
+ background: var(--color-warning-bg);
449
+ color: var(--color-warning-text);
450
+ }
451
+
452
+ .gen-evidence-badge.strength-suggestive {
453
+ background: var(--color-muted-bg);
454
+ color: var(--color-text-muted);
455
+ }
456
+
457
+ .gen-tactics-tags {
458
+ display: flex;
459
+ flex-wrap: wrap;
460
+ gap: 4px;
461
+ margin-top: 4px;
462
+ }
463
+
464
+ .ar-grid-summary {
465
+ display: flex;
466
+ align-items: center;
467
+ gap: 12px;
468
+ flex-wrap: wrap;
469
+ margin-bottom: var(--space-xl);
470
+ padding: 0;
471
+ background: none;
472
+ }
473
+
474
+ .ar-grid-total {
475
+ font-size: var(--type-caption);
476
+ font-weight: var(--weight-bold);
477
+ font-family: var(--font-sans);
478
+ color: var(--color-text-muted);
479
+ background: var(--color-surface-alt);
480
+ padding: 6px 14px;
481
+ border-radius: var(--radius-pill);
482
+ flex-shrink: 0;
483
+ }
484
+
485
+ .ar-grid-dist {
486
+ display: flex;
487
+ flex-wrap: wrap;
488
+ gap: 8px;
489
+ }
490
+
491
+ .ar-grid-dist-tag {
492
+ display: inline-block;
493
+ padding: 5px 14px;
494
+ border-radius: var(--radius-xl);
495
+ font-size: var(--type-label);
496
+ font-weight: var(--weight-semibold);
497
+ font-family: var(--font-sans);
498
+ border: 1px solid;
499
+ cursor: pointer;
500
+ transition: all var(--duration-fast);
501
+ background: none;
502
+ line-height: var(--leading-normal);
503
+ }
504
+
505
+ .ar-grid-dist-tag:hover {
506
+ opacity: 0.85;
507
+ transform: translateY(-1px);
508
+ }
509
+
510
+ .ar-grid-dist-tag--active {
511
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
512
+ }
513
+
514
+ .ar-grid-dist-clear {
515
+ display: inline-block;
516
+ padding: 5px 12px;
517
+ border-radius: var(--radius-xl);
518
+ font-size: 0.6875rem;
519
+ font-weight: var(--weight-medium);
520
+ font-family: var(--font-sans);
521
+ border: 1px dashed var(--color-border);
522
+ background: transparent;
523
+ color: var(--color-text-faint);
524
+ cursor: pointer;
525
+ transition: all var(--duration-fast);
526
+ }
527
+
528
+ .ar-grid-dist-clear:hover {
529
+ border-color: var(--color-text-faint);
530
+ color: var(--color-text-muted);
531
+ }
532
+
533
+ .ar-grid-group {
534
+ margin-bottom: var(--space-xl);
535
+ }
536
+
537
+ .ar-grid-group--enhanced {
538
+ margin-bottom: var(--space-2xl);
539
+ transition: background var(--duration-normal) var(--ease-out);
540
+ }
541
+
542
+ .ar-grid-group h3 {
543
+ display: flex;
544
+ align-items: center;
545
+ gap: 10px;
546
+ margin: 0;
547
+ font-family: var(--font-serif);
548
+ font-size: var(--type-subheading);
549
+ font-weight: var(--weight-semibold);
550
+ }
551
+
552
+ .ar-grid-group-badge {
553
+ display: inline-block;
554
+ padding: 4px 14px;
555
+ border-radius: var(--radius-pill);
556
+ font-size: var(--type-caption);
557
+ font-weight: var(--weight-bold);
558
+ font-family: var(--font-sans);
559
+ border: 1.5px solid;
560
+ }
561
+
562
+ .ar-grid-group-count {
563
+ font-size: var(--type-caption);
564
+ font-family: var(--font-sans);
565
+ color: var(--color-text-muted);
566
+ font-weight: var(--weight-medium);
567
+ }
568
+
569
+ .ar-grid-group-header {
570
+ margin-bottom: var(--space-md);
571
+ }
572
+
573
+ .ar-grid-group-rule {
574
+ height: 2px;
575
+ border-radius: 1px;
576
+ margin-bottom: var(--space-sm);
577
+ }
578
+
579
+ .ar-grid-group-desc {
580
+ font-size: var(--type-caption);
581
+ font-family: var(--font-body);
582
+ color: var(--color-text-muted);
583
+ font-style: normal;
584
+ margin: 6px 0 0 0;
585
+ line-height: 1.5;
586
+ padding-left: 2px;
587
+ max-width: 72ch;
588
+ }
589
+
590
+ .ar-grid-major-pill {
591
+ display: inline-block;
592
+ padding: 2px 10px;
593
+ border-radius: var(--radius-pill);
594
+ font-size: 0.6875rem;
595
+ font-weight: var(--weight-bold);
596
+ font-family: var(--font-sans);
597
+ background: var(--color-error-bg);
598
+ color: var(--color-error-text);
599
+ letter-spacing: 0.02em;
600
+ }
601
+
602
+ .ar-grid-cards {
603
+ display: grid;
604
+ grid-template-columns: repeat(auto-fill, minmax(460px, 1fr));
605
+ gap: var(--space-md);
606
+ }
607
+
608
+ .ar-grid-cards--variable {
609
+ display: grid;
610
+ grid-template-columns: repeat(2, 1fr);
611
+ gap: var(--space-md);
612
+ align-items: stretch;
613
+ }
614
+
615
+ .ar-grid-cards--variable > .ar-grid-card {
616
+ display: flex;
617
+ flex-direction: column;
618
+ }
619
+
620
+ .ar-grid-cards--variable > .ar-grid-card > .ar-card-content {
621
+ flex: 1;
622
+ }
623
+
624
+ .ar-grid-card {
625
+ padding: 18px 20px;
626
+ background: var(--color-surface);
627
+ border: 1px solid var(--color-border);
628
+ border-left: 4px solid;
629
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
630
+ transition: box-shadow var(--duration-fast) var(--ease-out),
631
+ transform var(--duration-fast) var(--ease-out);
632
+ position: relative;
633
+ }
634
+
635
+ .ar-grid-card--enhanced {
636
+ padding: var(--space-lg);
637
+ box-shadow: var(--shadow-xs);
638
+ }
639
+
640
+ .ar-grid-card--hero {
641
+ grid-column: 1 / -1;
642
+ padding: var(--space-xl);
643
+ border-left-width: 5px;
644
+ background: var(--color-surface);
645
+ box-shadow: var(--shadow-sm);
646
+ }
647
+
648
+ .ar-grid-card--hero .card-cell-title {
649
+ font-family: var(--font-serif);
650
+ font-size: var(--type-heading);
651
+ font-weight: var(--weight-semibold);
652
+ line-height: var(--leading-snug);
653
+ margin-bottom: var(--space-sm);
654
+ }
655
+
656
+ .ar-grid-card--hero .card-cell-body {
657
+ font-size: var(--type-body);
658
+ font-family: var(--font-body);
659
+ line-height: var(--leading-relaxed);
660
+ }
661
+
662
+ .ar-grid-card--single {
663
+ grid-column: 1 / -1;
664
+ }
665
+
666
+ .ar-grid-card.expanded {
667
+ box-shadow: var(--shadow-lg);
668
+ transform: translateY(-1px);
669
+ }
670
+
671
+ .ar-grid-card:hover {
672
+ box-shadow: var(--shadow-md);
673
+ transform: translateY(-1px);
674
+ }
675
+
676
+ .ar-grid-card--hero:hover {
677
+ box-shadow: var(--shadow-lg);
678
+ }
679
+
680
+ .ar-card-type-indicator {
681
+ display: flex;
682
+ align-items: center;
683
+ gap: var(--space-xs);
684
+ margin-bottom: var(--space-sm);
685
+ }
686
+
687
+ .ar-card-type-dot {
688
+ display: inline-block;
689
+ width: 8px;
690
+ height: 8px;
691
+ border-radius: 50%;
692
+ flex-shrink: 0;
693
+ }
694
+
695
+ .ar-card-type-label {
696
+ font-size: var(--type-label);
697
+ font-weight: var(--weight-medium);
698
+ font-family: var(--font-sans);
699
+ color: var(--color-text-muted);
700
+ text-transform: capitalize;
701
+ letter-spacing: 0.02em;
702
+ line-height: 1;
703
+ }
704
+
705
+ .ar-card-content {
706
+ position: relative;
707
+ }
708
+
709
+ .card-cell-expand-hint {
710
+ margin-top: var(--space-sm);
711
+ font-size: 0.625rem;
712
+ font-family: var(--font-sans);
713
+ color: var(--color-text-faint);
714
+ text-align: right;
715
+ text-transform: uppercase;
716
+ letter-spacing: 0.05em;
717
+ opacity: 0;
718
+ transition: opacity var(--duration-fast);
719
+ }
720
+
721
+ .ar-grid-card:hover .card-cell-expand-hint {
722
+ opacity: 1;
723
+ }
724
+
725
+ .card-cell-default {
726
+ font-size: var(--type-caption);
727
+ line-height: 1.55;
728
+ }
729
+
730
+ .card-cell-title {
731
+ font-size: var(--type-body);
732
+ font-weight: var(--weight-semibold);
733
+ font-family: var(--font-serif);
734
+ color: var(--color-text);
735
+ line-height: 1.45;
736
+ margin-bottom: 8px;
737
+ }
738
+
739
+ .card-cell-body {
740
+ margin: 0 0 10px 0;
741
+ font-family: var(--font-body);
742
+ color: var(--color-text);
743
+ font-size: var(--type-caption);
744
+ line-height: var(--leading-prose);
745
+ max-width: 72ch;
746
+ }
747
+
748
+ .card-cell-evidence {
749
+ margin: 0 0 10px 0;
750
+ padding: 8px 12px;
751
+ border-left: 2px solid var(--color-border);
752
+ background: var(--color-surface-alt);
753
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
754
+ color: var(--color-text-muted);
755
+ font-size: var(--type-label);
756
+ font-family: var(--font-body);
757
+ line-height: 1.55;
758
+ font-style: italic;
759
+ display: -webkit-box;
760
+ -webkit-line-clamp: 5;
761
+ -webkit-box-orient: vertical;
762
+ overflow: hidden;
763
+ }
764
+
765
+ .ar-grid-card.expanded .card-cell-evidence {
766
+ -webkit-line-clamp: unset;
767
+ overflow: visible;
768
+ }
769
+
770
+ .card-cell-tags {
771
+ display: flex;
772
+ flex-wrap: wrap;
773
+ gap: 6px;
774
+ margin-top: 8px;
775
+ }
776
+
777
+ .card-cell-tag {
778
+ display: inline-block;
779
+ padding: 2px 8px;
780
+ background: var(--color-surface-alt);
781
+ border: 1px solid var(--color-border-light);
782
+ border-radius: var(--radius-sm);
783
+ font-size: 0.6875rem;
784
+ font-family: var(--font-sans);
785
+ color: var(--color-text-muted);
786
+ line-height: 1.5;
787
+ }
788
+
789
+ .card-cell-tag-label {
790
+ font-weight: var(--weight-semibold);
791
+ color: var(--color-text);
792
+ margin-right: 2px;
793
+ }
794
+
795
+ .gen-evidence-toggle {
796
+ display: flex;
797
+ align-items: center;
798
+ gap: 8px;
799
+ width: 100%;
800
+ background: var(--color-surface-alt, #f8f9fa);
801
+ border: none;
802
+ padding: 10px 24px;
803
+ cursor: pointer;
804
+ font-size: inherit;
805
+ transition: background 0.2s ease;
806
+ border-top: 1px solid var(--color-border-light);
807
+ }
808
+
809
+ .gen-evidence-toggle:hover {
810
+ background: rgba(0, 0, 0, 0.04);
811
+ }
812
+
813
+ .gen-evidence-toggle-icon {
814
+ font-size: 0.5rem;
815
+ color: var(--color-text-faint);
816
+ width: 12px;
817
+ text-align: center;
818
+ transform: rotate(90deg);
819
+ transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), color 0.15s;
820
+ display: inline-block;
821
+ }
822
+
823
+ .gen-evidence-toggle--collapsed .gen-evidence-toggle-icon {
824
+ transform: rotate(0deg);
825
+ }
826
+
827
+ .gen-evidence-toggle-label {
828
+ font-size: 0.6rem;
829
+ font-weight: 600;
830
+ font-family: var(--font-sans);
831
+ color: var(--color-text-faint);
832
+ text-transform: uppercase;
833
+ letter-spacing: 0.06em;
834
+ transition: color 0.15s;
835
+ }
836
+
837
+ .gen-evidence-toggle:hover .gen-evidence-toggle-icon,
838
+ .gen-evidence-toggle:hover .gen-evidence-toggle-label {
839
+ color: var(--color-text-muted);
840
+ }
841
+
842
+ .gen-evidence-count {
843
+ font-size: 0.6rem;
844
+ font-family: var(--font-sans);
845
+ color: var(--color-text-muted);
846
+ font-weight: 600;
847
+ margin-left: auto;
848
+ min-width: 22px;
849
+ height: 22px;
850
+ display: flex;
851
+ align-items: center;
852
+ justify-content: center;
853
+ background: rgba(0, 0, 0, 0.06);
854
+ border-radius: 50%;
855
+ transition: color 0.15s, background 0.15s;
856
+ }
857
+
858
+ .gen-evidence-toggle:hover .gen-evidence-count {
859
+ background: rgba(0, 0, 0, 0.1);
860
+ color: var(--color-text);
861
+ }
862
+
863
+ .gen-evidence-trail {
864
+ margin: 0;
865
+ padding: 0;
866
+ background: var(--color-surface);
867
+ }
868
+
869
+ .gen-evidence-trail .gen-trail-chain {
870
+ padding-left: 14px;
871
+ padding-right: 24px;
872
+ padding-bottom: 20px;
873
+ margin-left: 24px;
874
+ }
875
+
876
+ .gen-trail-chain {
877
+ position: relative;
878
+ padding-left: 14px;
879
+ margin-top: 4px;
880
+ }
881
+
882
+ .gen-trail-step {
883
+ position: relative;
884
+ padding-bottom: 14px;
885
+ }
886
+
887
+ .gen-trail-step:last-child {
888
+ padding-bottom: 0;
889
+ }
890
+
891
+ .gen-trail-marker {
892
+ display: flex;
893
+ align-items: center;
894
+ gap: 8px;
895
+ margin-bottom: 8px;
896
+ }
897
+
898
+ .gen-trail-dot {
899
+ display: inline-block;
900
+ width: 8px;
901
+ height: 8px;
902
+ border-radius: 50%;
903
+ flex-shrink: 0;
904
+ }
905
+
906
+ .gen-trail-dot--prior {
907
+ background: var(--color-text-faint);
908
+ box-shadow: 0 0 0 2px rgba(148, 163, 184, 0.12);
909
+ }
910
+
911
+ .gen-trail-dot--current {
912
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);
913
+ }
914
+
915
+ .gen-trail-dot--assessment {
916
+ background: var(--color-text-muted);
917
+ box-shadow: 0 0 0 2px rgba(71, 85, 105, 0.1);
918
+ }
919
+
920
+ .gen-trail-label {
921
+ font-size: 0.6875rem;
922
+ font-weight: var(--weight-medium);
923
+ font-family: var(--font-sans);
924
+ text-transform: capitalize;
925
+ letter-spacing: 0.02em;
926
+ color: var(--color-text-muted);
927
+ }
928
+
929
+ .gen-trail-content {
930
+ margin-left: 18px;
931
+ }
932
+
933
+ .gen-trail-connector {
934
+ width: 2px;
935
+ height: 16px;
936
+ margin-left: 4px;
937
+ border-radius: 1px;
938
+ opacity: 0.5;
939
+ }
940
+
941
+ .gen-trail-connector--final {
942
+ opacity: 0.3;
943
+ }
944
+
945
+ .gen-trail-ref {
946
+ margin-bottom: 8px;
947
+ }
948
+
949
+ .gen-trail-quote {
950
+ background: var(--color-surface-alt);
951
+ border-left: 2px solid var(--color-border);
952
+ margin: 4px 0;
953
+ padding: 6px 12px;
954
+ font-size: 0.8rem;
955
+ font-family: var(--font-body);
956
+ color: var(--color-text-muted);
957
+ line-height: 1.55;
958
+ border-radius: 0 3px 3px 0;
959
+ }
960
+
961
+ .gen-trail-quote--current {
962
+ background: rgba(59, 130, 246, 0.03);
963
+ border-left-color: rgba(59, 130, 246, 0.3);
964
+ }
965
+
966
+ .gen-trail-cite {
967
+ display: block;
968
+ font-style: normal;
969
+ font-size: 0.6875rem;
970
+ font-family: var(--font-sans);
971
+ color: var(--color-text-faint);
972
+ margin-top: 4px;
973
+ font-weight: var(--weight-medium);
974
+ }
975
+
976
+ .gen-prose-badge {
977
+ background: var(--color-accent) !important;
978
+ color: var(--dt-text-inverse, #ffffff) !important;
979
+ font-size: 0.65rem;
980
+ font-weight: var(--weight-bold);
981
+ font-family: var(--font-sans);
982
+ letter-spacing: 0.05em;
983
+ }
984
+
985
+ .gen-prose-mode-badge {
986
+ display: inline-block;
987
+ background: var(--color-accent);
988
+ color: var(--dt-text-inverse, #ffffff);
989
+ font-size: 0.7rem;
990
+ font-weight: var(--weight-semibold);
991
+ font-family: var(--font-sans);
992
+ padding: 4px 10px;
993
+ border-radius: var(--radius-sm);
994
+ margin-bottom: var(--space-md);
995
+ letter-spacing: 0.03em;
996
+ }
997
+
998
+ .gen-extracting-notice {
999
+ text-align: center;
1000
+ padding: var(--space-3xl) var(--space-lg);
1001
+ color: var(--color-text-faint);
1002
+ }
1003
+
1004
+ .gen-extracting-spinner {
1005
+ width: 32px;
1006
+ height: 32px;
1007
+ border: 3px solid var(--color-border);
1008
+ border-top-color: var(--color-accent);
1009
+ border-radius: 50%;
1010
+ animation: gen-spin 0.8s linear infinite;
1011
+ margin: 0 auto var(--space-md);
1012
+ }
1013
+
1014
+ .gen-extracting-notice p {
1015
+ margin: 8px 0;
1016
+ font-family: var(--font-sans);
1017
+ }
1018
+
1019
+ .gen-extracting-detail {
1020
+ font-size: 0.85rem;
1021
+ color: var(--color-text-muted);
1022
+ }
1023
+
1024
+ .gen-extraction-error {
1025
+ padding: var(--space-lg);
1026
+ background: var(--color-error-bg-subtle);
1027
+ border: 1px solid var(--color-error-border);
1028
+ border-radius: var(--radius-md);
1029
+ color: var(--color-error-text);
1030
+ }
1031
+
1032
+ .gen-extraction-error p {
1033
+ margin: 8px 0;
1034
+ font-family: var(--font-sans);
1035
+ }
1036
+
1037
+ .gen-extraction-fallback {
1038
+ font-size: 0.85rem;
1039
+ color: var(--color-text-faint);
1040
+ }
1041
+
1042
+ .ar-grid-cards,
1043
+ .ar-grid-cards--variable {
1044
+ grid-template-columns: 1fr;
1045
+ }
1046
+
1047
+ .ar-grid-cards--variable {
1048
+ grid-template-columns: 1fr;
1049
+ }