repo-wrapped 0.0.7 → 0.0.9

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 (172) hide show
  1. package/.github/agents/complete.agent.md +257 -0
  2. package/.github/agents/feature-scaffold.agent.md +248 -0
  3. package/.github/agents/jsdoc.agent.md +243 -0
  4. package/.github/agents/plan.agent.md +202 -0
  5. package/.github/agents/spec-writer.agent.md +169 -0
  6. package/.github/agents/test-writer.agent.md +169 -0
  7. package/.stylelintrc.json +27 -0
  8. package/README.md +94 -94
  9. package/coverage/base.css +224 -0
  10. package/coverage/block-navigation.js +87 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/index.html +446 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +446 -0
  17. package/coverage/lcov-report/prettify.css +1 -0
  18. package/coverage/lcov-report/prettify.js +2 -0
  19. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  20. package/coverage/lcov-report/sorter.js +210 -0
  21. package/coverage/lcov.info +7039 -0
  22. package/coverage/prettify.css +1 -0
  23. package/coverage/prettify.js +2 -0
  24. package/coverage/sort-arrow-sprite.png +0 -0
  25. package/coverage/sorter.js +210 -0
  26. package/dist/commands/generate.js +56 -56
  27. package/dist/config/defaults.js +158 -0
  28. package/dist/config/index.js +10 -0
  29. package/dist/features/achievements/data/achievements.json +284 -0
  30. package/dist/features/achievements/engine.js +140 -0
  31. package/dist/features/achievements/evaluators.js +246 -0
  32. package/dist/features/achievements/helpers.js +58 -0
  33. package/dist/features/achievements/index.js +57 -0
  34. package/dist/features/achievements/loader.js +88 -0
  35. package/dist/features/achievements/template.js +155 -0
  36. package/dist/features/achievements/types.js +7 -0
  37. package/dist/features/commit-quality/analyzer.js +378 -0
  38. package/dist/features/commit-quality/analyzer.test.js +484 -0
  39. package/dist/features/commit-quality/index.js +28 -0
  40. package/dist/features/commit-quality/template.js +114 -0
  41. package/dist/features/commit-quality/types.js +2 -0
  42. package/dist/features/comparison/analyzer.js +222 -0
  43. package/dist/features/comparison/index.js +28 -0
  44. package/dist/features/comparison/template.js +119 -0
  45. package/dist/features/comparison/types.js +2 -0
  46. package/dist/features/contribution-graph/index.js +9 -0
  47. package/dist/features/contribution-graph/template.js +89 -0
  48. package/dist/features/events/index.js +31 -0
  49. package/dist/features/events/parser.js +253 -0
  50. package/dist/features/events/template.js +113 -0
  51. package/dist/features/events/types.js +2 -0
  52. package/dist/features/executive-summary/generator.js +275 -0
  53. package/dist/features/executive-summary/index.js +27 -0
  54. package/dist/features/executive-summary/template.js +80 -0
  55. package/dist/features/executive-summary/types.js +2 -0
  56. package/dist/features/gaps/analyzer.js +298 -0
  57. package/dist/features/gaps/analyzer.test.js +517 -0
  58. package/dist/features/gaps/index.js +27 -0
  59. package/dist/features/gaps/template.js +190 -0
  60. package/dist/features/gaps/types.js +2 -0
  61. package/dist/features/impact/analyzer.js +248 -0
  62. package/dist/features/impact/index.js +26 -0
  63. package/dist/features/impact/template.js +118 -0
  64. package/dist/features/impact/types.js +2 -0
  65. package/dist/features/index.js +40 -0
  66. package/dist/features/knowledge/analyzer.js +385 -0
  67. package/dist/features/knowledge/index.js +26 -0
  68. package/dist/features/knowledge/template.js +239 -0
  69. package/dist/features/knowledge/types.js +2 -0
  70. package/dist/features/streaks/calculator.js +184 -0
  71. package/dist/features/streaks/calculator.test.js +366 -0
  72. package/dist/features/streaks/index.js +36 -0
  73. package/dist/features/streaks/template.js +41 -0
  74. package/dist/features/streaks/types.js +9 -0
  75. package/dist/features/team/analyzer.js +316 -0
  76. package/dist/features/team/index.js +30 -0
  77. package/dist/features/team/template.js +146 -0
  78. package/dist/features/team/types.js +2 -0
  79. package/dist/features/time-patterns/analyzer.js +319 -0
  80. package/dist/features/time-patterns/analyzer.test.js +278 -0
  81. package/dist/features/time-patterns/index.js +37 -0
  82. package/dist/features/time-patterns/template.js +109 -0
  83. package/dist/features/time-patterns/types.js +9 -0
  84. package/dist/features/velocity/analyzer.js +257 -0
  85. package/dist/features/velocity/analyzer.test.js +383 -0
  86. package/dist/features/velocity/index.js +27 -0
  87. package/dist/features/velocity/template.js +189 -0
  88. package/dist/features/velocity/types.js +2 -0
  89. package/dist/generators/html/scripts/knowledge.js +17 -0
  90. package/dist/generators/html/styles/base.css +8 -3
  91. package/dist/generators/html/styles/components.css +121 -1
  92. package/dist/generators/html/styles/knowledge.css +21 -0
  93. package/dist/generators/html/styles/leaddev.css +108 -48
  94. package/dist/generators/html/styles/strategic-insights.css +1337 -0
  95. package/dist/generators/html/templates/commitQualitySection.js +28 -2
  96. package/dist/generators/html/templates/executiveSummarySection.js +0 -4
  97. package/dist/generators/html/templates/impactSection.js +8 -6
  98. package/dist/generators/html/templates/knowledgeSection.js +16 -2
  99. package/dist/generators/html/templates/velocitySection.js +2 -2
  100. package/dist/generators/html/types.js +7 -0
  101. package/dist/generators/html/utils/analysisRunner.js +93 -0
  102. package/dist/generators/html/utils/cardBuilder.js +47 -0
  103. package/dist/generators/html/utils/contextBuilder.js +54 -0
  104. package/dist/generators/html/utils/htmlDocumentBuilder.js +396 -0
  105. package/dist/generators/html/utils/kpiBuilder.js +76 -0
  106. package/dist/generators/html/utils/sectionWrapper.js +71 -0
  107. package/dist/generators/html/utils/styleLoader.js +2 -2
  108. package/dist/html/analysisRunner.js +93 -0
  109. package/dist/html/htmlDocumentBuilder.js +396 -0
  110. package/dist/html/index.js +29 -0
  111. package/dist/html/shared/colorUtils.js +61 -0
  112. package/dist/html/shared/commitMapBuilder.js +23 -0
  113. package/dist/html/shared/components/cardBuilder.js +47 -0
  114. package/dist/html/shared/components/index.js +18 -0
  115. package/dist/html/shared/components/kpiBuilder.js +76 -0
  116. package/dist/html/shared/components/sectionWrapper.js +71 -0
  117. package/dist/html/shared/contextBuilder.js +54 -0
  118. package/dist/html/shared/dateRangeCalculator.js +56 -0
  119. package/dist/html/shared/developerStatsCalculator.js +28 -0
  120. package/dist/html/shared/index.js +39 -0
  121. package/dist/html/shared/scriptLoader.js +15 -0
  122. package/dist/html/shared/scripts/export.js +125 -0
  123. package/dist/html/shared/scripts/knowledge.js +137 -0
  124. package/dist/html/shared/scripts/modal.js +68 -0
  125. package/dist/html/shared/scripts/navigation.js +156 -0
  126. package/dist/html/shared/scripts/tabs.js +18 -0
  127. package/dist/html/shared/scripts/tooltip.js +21 -0
  128. package/dist/html/shared/styleLoader.js +18 -0
  129. package/dist/html/shared/styles/achievements.css +387 -0
  130. package/dist/html/shared/styles/base.css +822 -0
  131. package/dist/html/shared/styles/components.css +1511 -0
  132. package/dist/html/shared/styles/knowledge.css +242 -0
  133. package/dist/html/shared/styles/strategic-insights.css +1337 -0
  134. package/dist/html/shared/weekGrouper.js +27 -0
  135. package/dist/html/types.js +7 -0
  136. package/dist/index.js +39 -39
  137. package/dist/test/helpers/commitFactory.js +166 -0
  138. package/dist/test/helpers/dateUtils.js +101 -0
  139. package/dist/test/helpers/index.js +29 -0
  140. package/dist/test/setup.js +17 -0
  141. package/dist/test/smoke.test.js +94 -0
  142. package/dist/types/achievements.js +7 -0
  143. package/dist/types/analysis.js +7 -0
  144. package/dist/types/core.js +7 -0
  145. package/dist/types/index.js +38 -0
  146. package/dist/types/options.js +7 -0
  147. package/dist/types/shared.js +7 -0
  148. package/dist/types/strategic.js +7 -0
  149. package/dist/types/summary.js +7 -0
  150. package/dist/utils/achievementDefinitions.js +22 -22
  151. package/dist/utils/analyzerContextBuilder.js +124 -0
  152. package/dist/utils/commitQualityAnalyzer.js +13 -2
  153. package/dist/utils/emptyResults.js +95 -0
  154. package/dist/utils/fileHotspotAnalyzer.js +4 -12
  155. package/dist/utils/gapAnalyzer.js +26 -28
  156. package/dist/utils/gitParser.test.js +363 -0
  157. package/dist/utils/htmlGenerator.js +62 -466
  158. package/dist/utils/impactAnalyzer.js +20 -19
  159. package/dist/utils/knowledgeDistributionAnalyzer.js +32 -27
  160. package/dist/utils/matrixGenerator.js +13 -13
  161. package/dist/utils/rangeComparisonAnalyzer.js +2 -2
  162. package/dist/utils/streakCalculator.js +77 -27
  163. package/dist/utils/teamAnalyzer.js +20 -1
  164. package/dist/utils/timePatternAnalyzer.js +18 -3
  165. package/dist/utils/velocityAnalyzer.js +23 -18
  166. package/dist/utils/wrappedGenerator.js +8 -8
  167. package/package.json +74 -64
  168. package/vitest.config.ts +46 -0
  169. package/SPECS.md +0 -490
  170. package/dist/cli.js +0 -24
  171. package/dist/commands/index.js +0 -24
  172. package/test-team.txt +0 -2
@@ -0,0 +1,1511 @@
1
+ /* === Contribution Graph === */
2
+ .graph-container {
3
+ position: relative;
4
+ max-width: 80svw;
5
+ overflow-x: auto;
6
+ }
7
+
8
+ .months {
9
+ display: flex;
10
+ gap: 2px;
11
+ margin-bottom: var(--spacing-xs);
12
+ font-size: var(--font-size-sm);
13
+ color: var(--text-secondary);
14
+ margin-left: 45px;
15
+ }
16
+
17
+ .month-label {
18
+ font-weight: var(--font-weight-medium);
19
+ width: 22px;
20
+ }
21
+
22
+ .graph {
23
+ display: flex;
24
+ gap: 2px;
25
+ }
26
+
27
+ .graph-column {
28
+ display: flex;
29
+ flex-direction: column;
30
+ gap: 2px;
31
+ }
32
+
33
+ .day-label {
34
+ font-size: var(--font-size-xs);
35
+ color: var(--text-secondary);
36
+ display: flex;
37
+ align-items: center;
38
+ padding-right: var(--spacing-xs);
39
+ width: 40px;
40
+ height: 22px;
41
+ }
42
+
43
+ .day-labels {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 2px;
47
+ margin-right: 2px;
48
+ }
49
+
50
+ .day {
51
+ width: 20px;
52
+ height: 20px;
53
+ border-radius: var(--radius-sm);
54
+ cursor: pointer;
55
+ transition: outline var(--transition-fast);
56
+ }
57
+
58
+ .day.clickable {
59
+ cursor: pointer;
60
+ }
61
+
62
+ .day.clickable:hover {
63
+ outline: 2px solid var(--accent-blue);
64
+ outline-offset: 1px;
65
+ }
66
+
67
+ .day.empty {
68
+ border: 1px solid var(--border-subtle);
69
+ box-sizing: border-box;
70
+ }
71
+
72
+ .day:hover {
73
+ outline: 2px solid var(--accent-blue);
74
+ outline-offset: 1px;
75
+ }
76
+
77
+ .legend {
78
+ margin-top: var(--spacing-md);
79
+ display: flex;
80
+ align-items: center;
81
+ gap: var(--spacing-xs);
82
+ font-size: var(--font-size-sm);
83
+ color: var(--text-secondary);
84
+ justify-content: flex-end;
85
+ }
86
+
87
+ .legend-box {
88
+ width: 12px;
89
+ height: 12px;
90
+ border-radius: var(--radius-sm);
91
+ display: inline-block;
92
+ }
93
+
94
+ /* === Tooltip === */
95
+ .tooltip {
96
+ position: fixed;
97
+ background: var(--bg-tertiary);
98
+ border: 1px solid var(--border-default);
99
+ border-radius: var(--radius-md);
100
+ padding: var(--spacing-sm) var(--spacing-md);
101
+ font-size: var(--font-size-sm);
102
+ pointer-events: none;
103
+ display: none;
104
+ z-index: 1000;
105
+ box-shadow: var(--shadow-lg);
106
+ }
107
+
108
+ /* === Modal === */
109
+ .modal {
110
+ position: fixed;
111
+ top: 0;
112
+ left: 0;
113
+ width: 100%;
114
+ height: 100%;
115
+ background: rgba(0, 0, 0, 0.8);
116
+ display: none;
117
+ justify-content: center;
118
+ align-items: center;
119
+ z-index: 2000;
120
+ }
121
+
122
+ .modal.active {
123
+ display: flex;
124
+ }
125
+
126
+ .modal-content {
127
+ background: var(--bg-secondary);
128
+ border: 1px solid var(--border-default);
129
+ border-radius: var(--radius-lg);
130
+ padding: var(--spacing-lg);
131
+ max-width: 700px;
132
+ max-height: 80vh;
133
+ overflow-y: auto;
134
+ width: 90%;
135
+ box-shadow: var(--shadow-lg);
136
+ }
137
+
138
+ .modal-header {
139
+ display: flex;
140
+ justify-content: space-between;
141
+ align-items: center;
142
+ margin-bottom: var(--spacing-md);
143
+ padding-bottom: var(--spacing-md);
144
+ border-bottom: 1px solid var(--border-default);
145
+ }
146
+
147
+ .modal-title {
148
+ font-size: var(--font-size-xl);
149
+ font-weight: var(--font-weight-semibold);
150
+ color: var(--text-primary);
151
+ }
152
+
153
+ .modal-close {
154
+ background: none;
155
+ border: none;
156
+ color: var(--text-secondary);
157
+ font-size: 24px;
158
+ cursor: pointer;
159
+ padding: 0;
160
+ width: 32px;
161
+ height: 32px;
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ border-radius: var(--radius-md);
166
+ transition: background-color var(--transition-fast), color var(--transition-fast);
167
+ }
168
+
169
+ .modal-close:hover {
170
+ background: var(--bg-elevated);
171
+ color: var(--text-primary);
172
+ }
173
+
174
+ .modal-close:focus-visible {
175
+ outline: 2px solid var(--accent-blue);
176
+ outline-offset: 2px;
177
+ }
178
+
179
+ .commit-list {
180
+ display: flex;
181
+ flex-direction: column;
182
+ gap: var(--spacing-md);
183
+ }
184
+
185
+ .commit-item {
186
+ background: var(--bg-primary);
187
+ border: 1px solid var(--border-default);
188
+ border-radius: var(--radius-md);
189
+ padding: var(--spacing-md);
190
+ transition: border-color var(--transition-fast);
191
+ }
192
+
193
+ .commit-item:hover {
194
+ border-color: var(--border-emphasis);
195
+ }
196
+
197
+ .commit-message {
198
+ font-size: var(--font-size-md);
199
+ color: var(--text-primary);
200
+ margin-bottom: var(--spacing-sm);
201
+ font-weight: var(--font-weight-medium);
202
+ }
203
+
204
+ .commit-meta {
205
+ display: flex;
206
+ gap: var(--spacing-md);
207
+ flex-wrap: wrap;
208
+ font-size: var(--font-size-sm);
209
+ color: var(--text-secondary);
210
+ }
211
+
212
+ .commit-meta-item {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: var(--spacing-xs);
216
+ }
217
+
218
+ .commit-sha {
219
+ font-family: var(--font-mono);
220
+ background: var(--bg-elevated);
221
+ padding: 2px 6px;
222
+ border-radius: var(--radius-sm);
223
+ color: var(--text-link);
224
+ }
225
+
226
+ /* === Reusable Stat Card Base === */
227
+ .stat-card-base {
228
+ display: flex;
229
+ flex-direction: column;
230
+ align-items: center;
231
+ justify-content: center;
232
+ text-align: center;
233
+ gap: var(--spacing-sm);
234
+ padding: var(--spacing-md);
235
+ background: var(--bg-primary);
236
+ border: 1px solid var(--border-default);
237
+ border-radius: var(--radius-md);
238
+ transition: border-color var(--transition-fast);
239
+ }
240
+
241
+ .stat-card-base:hover {
242
+ border-color: var(--border-emphasis);
243
+ }
244
+
245
+ .stat-card-base .stat-icon {
246
+ font-size: 32px;
247
+ line-height: 1;
248
+ }
249
+
250
+ .stat-card-base .stat-label {
251
+ font-size: var(--font-size-sm);
252
+ color: var(--text-secondary);
253
+ text-transform: uppercase;
254
+ letter-spacing: 0.5px;
255
+ font-weight: var(--font-weight-medium);
256
+ }
257
+
258
+ .stat-card-base .stat-value {
259
+ font-size: 24px;
260
+ font-weight: var(--font-weight-semibold);
261
+ color: var(--text-primary);
262
+ }
263
+
264
+ .stat-card-base .stat-detail {
265
+ font-size: var(--font-size-sm);
266
+ color: var(--text-secondary);
267
+ }
268
+
269
+ /* === Streak Section === */
270
+ .streak-section {
271
+ margin-top: var(--spacing-xl);
272
+ padding-top: var(--spacing-lg);
273
+ border-top: 1px solid var(--border-default);
274
+ }
275
+
276
+ .streak-section h2 {
277
+ font-size: var(--font-size-xl);
278
+ margin-bottom: var(--spacing-md);
279
+ color: var(--text-primary);
280
+ }
281
+
282
+ .streak-cards {
283
+ display: grid;
284
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
285
+ gap: var(--spacing-md);
286
+ }
287
+
288
+ .streak-card {
289
+ display: flex;
290
+ flex-direction: column;
291
+ align-items: center;
292
+ justify-content: center;
293
+ text-align: center;
294
+ gap: var(--spacing-sm);
295
+ padding: var(--spacing-md);
296
+ background: var(--bg-primary);
297
+ border: 1px solid var(--border-default);
298
+ border-radius: var(--radius-md);
299
+ transition: border-color var(--transition-fast);
300
+ }
301
+
302
+ .streak-card:hover {
303
+ border-color: var(--border-emphasis);
304
+ }
305
+
306
+ .streak-icon {
307
+ font-size: 32px;
308
+ line-height: 1;
309
+ }
310
+
311
+ .streak-info {
312
+ display: flex;
313
+ flex-direction: column;
314
+ align-items: center;
315
+ }
316
+
317
+ .streak-label {
318
+ font-size: var(--font-size-sm);
319
+ color: var(--text-secondary);
320
+ margin-bottom: var(--spacing-xs);
321
+ text-transform: uppercase;
322
+ letter-spacing: 0.5px;
323
+ font-weight: var(--font-weight-medium);
324
+ }
325
+
326
+ .streak-value {
327
+ font-size: 24px;
328
+ font-weight: var(--font-weight-semibold);
329
+ color: var(--text-primary);
330
+ margin-bottom: var(--spacing-xs);
331
+ }
332
+
333
+ .streak-motivation {
334
+ font-size: var(--font-size-sm);
335
+ color: var(--accent-blue);
336
+ }
337
+
338
+ .streak-date-range {
339
+ font-size: var(--font-size-sm);
340
+ color: var(--text-secondary);
341
+ }
342
+
343
+ .active-days-bar {
344
+ margin-top: var(--spacing-sm);
345
+ margin-bottom: var(--spacing-xs);
346
+ height: 6px;
347
+ background: var(--border-subtle);
348
+ border-radius: var(--radius-sm);
349
+ overflow: hidden;
350
+ }
351
+
352
+ .active-days-progress {
353
+ height: 100%;
354
+ background: var(--accent-green);
355
+ border-radius: var(--radius-sm);
356
+ transition: width 0.3s ease;
357
+ }
358
+
359
+ .active-days-percentage {
360
+ font-size: var(--font-size-sm);
361
+ color: var(--text-secondary);
362
+ }
363
+
364
+ /* === Time Patterns Section === */
365
+ .time-patterns-section {
366
+ margin-top: var(--spacing-xl);
367
+ padding-top: var(--spacing-lg);
368
+ border-top: 1px solid var(--border-default);
369
+ }
370
+
371
+ .time-patterns-section h2 {
372
+ font-size: var(--font-size-xl);
373
+ margin-bottom: var(--spacing-md);
374
+ color: var(--text-primary);
375
+ }
376
+
377
+ .patterns-grid {
378
+ display: grid;
379
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
380
+ gap: var(--spacing-md);
381
+ margin-bottom: var(--spacing-md);
382
+ }
383
+
384
+ .pattern-card {
385
+ padding: var(--spacing-md);
386
+ background: var(--bg-primary);
387
+ border: 1px solid var(--border-default);
388
+ border-radius: var(--radius-md);
389
+ transition: border-color var(--transition-fast);
390
+ }
391
+
392
+ .pattern-card:hover {
393
+ border-color: var(--border-emphasis);
394
+ }
395
+
396
+ .pattern-header {
397
+ display: flex;
398
+ align-items: center;
399
+ gap: var(--spacing-sm);
400
+ margin-bottom: var(--spacing-sm);
401
+ }
402
+
403
+ .pattern-icon {
404
+ font-size: 20px;
405
+ }
406
+
407
+ .pattern-title {
408
+ font-size: var(--font-size-sm);
409
+ color: var(--text-secondary);
410
+ text-transform: uppercase;
411
+ letter-spacing: 0.5px;
412
+ font-weight: var(--font-weight-medium);
413
+ }
414
+
415
+ .pattern-value {
416
+ font-size: var(--font-size-2xl);
417
+ font-weight: var(--font-weight-semibold);
418
+ color: var(--text-primary);
419
+ margin-bottom: var(--spacing-xs);
420
+ }
421
+
422
+ .pattern-detail {
423
+ font-size: var(--font-size-sm);
424
+ color: var(--text-secondary);
425
+ }
426
+
427
+ /* === Burnout Warning (Wellbeing Note) === */
428
+ .burnout-warning,
429
+ .wellbeing-note {
430
+ margin: var(--spacing-md) 0;
431
+ padding: var(--spacing-md);
432
+ background: rgba(158, 106, 3, 0.1);
433
+ border: 1px solid var(--status-warning);
434
+ border-radius: var(--radius-md);
435
+ }
436
+
437
+ .burnout-header,
438
+ .wellbeing-header {
439
+ display: flex;
440
+ align-items: center;
441
+ gap: var(--spacing-sm);
442
+ margin-bottom: var(--spacing-sm);
443
+ }
444
+
445
+ .warning-icon,
446
+ .wellbeing-icon {
447
+ font-size: 20px;
448
+ }
449
+
450
+ .warning-title,
451
+ .wellbeing-title {
452
+ font-size: var(--font-size-md);
453
+ font-weight: var(--font-weight-semibold);
454
+ color: #f0883e;
455
+ }
456
+
457
+ .burnout-indicators,
458
+ .wellbeing-indicators {
459
+ margin: var(--spacing-sm) 0 var(--spacing-sm) var(--spacing-lg);
460
+ color: var(--text-secondary);
461
+ font-size: var(--font-size-sm);
462
+ list-style-type: disc;
463
+ }
464
+
465
+ .burnout-indicators li,
466
+ .wellbeing-indicators li {
467
+ margin-bottom: var(--spacing-xs);
468
+ }
469
+
470
+ .burnout-message,
471
+ .wellbeing-message {
472
+ margin-top: var(--spacing-sm);
473
+ padding: var(--spacing-sm);
474
+ background: rgba(35, 134, 54, 0.1);
475
+ border-left: 3px solid var(--status-success);
476
+ color: var(--text-secondary);
477
+ font-size: var(--font-size-sm);
478
+ }
479
+
480
+ /* Chronotype dual display */
481
+ .chronotype-display {
482
+ display: flex;
483
+ flex-direction: column;
484
+ gap: 2px;
485
+ }
486
+
487
+ .chronotype-display .chronotype-label {
488
+ font-size: var(--font-size-lg);
489
+ font-weight: var(--font-weight-medium);
490
+ color: var(--text-primary);
491
+ }
492
+
493
+ .chronotype-display .chronotype-detail {
494
+ font-size: var(--font-size-xs);
495
+ color: var(--text-muted);
496
+ }
497
+
498
+ .chronotype-insight {
499
+ padding: var(--spacing-md);
500
+ background: var(--bg-primary);
501
+ border: 1px solid var(--border-default);
502
+ border-radius: var(--radius-md);
503
+ color: var(--text-secondary);
504
+ font-size: var(--font-size-sm);
505
+ }
506
+
507
+ /* === Commit Quality Section === */
508
+ .commit-quality-section {
509
+ margin-top: var(--spacing-xl);
510
+ padding-top: var(--spacing-lg);
511
+ border-top: 1px solid var(--border-default);
512
+ }
513
+
514
+ .commit-quality-section h2 {
515
+ font-size: var(--font-size-xl);
516
+ margin-bottom: var(--spacing-md);
517
+ color: var(--text-primary);
518
+ }
519
+
520
+ .commit-quality-section h3 {
521
+ font-size: var(--font-size-lg);
522
+ margin: var(--spacing-md) 0 var(--spacing-md) 0;
523
+ color: var(--text-primary);
524
+ }
525
+
526
+ .quality-summary {
527
+ display: flex;
528
+ gap: var(--spacing-xl);
529
+ align-items: center;
530
+ margin-bottom: var(--spacing-lg);
531
+ }
532
+
533
+ .quality-score-circle {
534
+ text-align: center;
535
+ }
536
+
537
+ /* New professional score display */
538
+ .quality-score-display {
539
+ text-align: center;
540
+ padding: var(--spacing-md);
541
+ background: var(--bg-primary);
542
+ border: 1px solid var(--border-default);
543
+ border-radius: var(--radius-md);
544
+ min-width: 120px;
545
+ }
546
+
547
+ .quality-score-display .score-value {
548
+ font-size: 36px;
549
+ font-weight: var(--font-weight-semibold);
550
+ color: var(--text-primary);
551
+ line-height: 1;
552
+ }
553
+
554
+ .quality-score-display .score-max {
555
+ font-size: var(--font-size-md);
556
+ color: var(--text-muted);
557
+ margin-left: 2px;
558
+ }
559
+
560
+ .quality-score-display .score-label {
561
+ font-size: var(--font-size-sm);
562
+ color: var(--accent-green);
563
+ font-weight: var(--font-weight-medium);
564
+ margin-top: var(--spacing-xs);
565
+ }
566
+
567
+ .quality-rating {
568
+ font-size: var(--font-size-2xl);
569
+ margin-top: var(--spacing-sm);
570
+ }
571
+
572
+ .big-number {
573
+ font-size: 48px;
574
+ font-weight: var(--font-weight-semibold);
575
+ color: var(--text-primary);
576
+ margin: var(--spacing-sm) 0;
577
+ }
578
+
579
+ .quality-level {
580
+ font-size: var(--font-size-md);
581
+ color: var(--text-secondary);
582
+ margin-top: var(--spacing-xs);
583
+ }
584
+
585
+ .quality-breakdown {
586
+ flex: 1;
587
+ display: flex;
588
+ flex-direction: column;
589
+ gap: var(--spacing-md);
590
+ }
591
+
592
+ .quality-metric {
593
+ display: grid;
594
+ grid-template-columns: 150px 1fr 80px;
595
+ align-items: center;
596
+ gap: var(--spacing-md);
597
+ }
598
+
599
+ .metric-label {
600
+ font-size: var(--font-size-sm);
601
+ color: var(--text-secondary);
602
+ }
603
+
604
+ .metric-bar-container {
605
+ height: 8px;
606
+ background: var(--border-subtle);
607
+ border-radius: var(--radius-md);
608
+ overflow: hidden;
609
+ }
610
+
611
+ .metric-bar {
612
+ height: 100%;
613
+ background: var(--accent-green);
614
+ border-radius: var(--radius-md);
615
+ transition: width 0.3s ease;
616
+ }
617
+
618
+ .metric-value {
619
+ font-size: var(--font-size-sm);
620
+ color: var(--text-primary);
621
+ text-align: right;
622
+ }
623
+
624
+ .commit-types-chart {
625
+ margin: var(--spacing-lg) 0;
626
+ padding: var(--spacing-md);
627
+ background: var(--bg-primary);
628
+ border: 1px solid var(--border-default);
629
+ border-radius: var(--radius-md);
630
+ }
631
+
632
+ .commit-types-chart h3 {
633
+ font-size: var(--font-size-md);
634
+ color: var(--text-primary);
635
+ margin-bottom: var(--spacing-md);
636
+ }
637
+
638
+ .commit-types-list {
639
+ display: flex;
640
+ flex-wrap: wrap;
641
+ gap: var(--spacing-sm);
642
+ }
643
+
644
+ .commit-type-row {
645
+ display: inline-flex;
646
+ align-items: center;
647
+ gap: var(--spacing-xs);
648
+ padding: var(--spacing-xs) var(--spacing-sm);
649
+ background: var(--bg-secondary);
650
+ border-radius: var(--radius-md);
651
+ transition: background-color var(--transition-fast);
652
+ }
653
+
654
+ .commit-type-row:hover {
655
+ background: var(--bg-tertiary);
656
+ }
657
+
658
+ .commit-type {
659
+ font-size: var(--font-size-sm);
660
+ color: var(--text-link);
661
+ font-weight: var(--font-weight-semibold);
662
+ }
663
+
664
+ .commit-type-count {
665
+ font-size: var(--font-size-sm);
666
+ color: var(--text-primary);
667
+ font-weight: var(--font-weight-semibold);
668
+ background: var(--border-subtle);
669
+ padding: var(--spacing-xs) var(--spacing-sm);
670
+ border-radius: var(--radius-xl);
671
+ }
672
+
673
+ /* Subject Quality Breakdown */
674
+ .subject-quality-breakdown {
675
+ margin: var(--spacing-lg) 0;
676
+ padding: var(--spacing-md);
677
+ background: var(--bg-primary);
678
+ border: 1px solid var(--border-default);
679
+ border-radius: var(--radius-md);
680
+ }
681
+
682
+ .subject-quality-breakdown h3 {
683
+ margin-top: 0;
684
+ margin-bottom: var(--spacing-md);
685
+ }
686
+
687
+ .subject-metrics-grid {
688
+ display: grid;
689
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
690
+ gap: var(--spacing-md);
691
+ }
692
+
693
+ .subject-metric {
694
+ display: flex;
695
+ flex-direction: column;
696
+ gap: var(--spacing-xs);
697
+ padding: var(--spacing-sm);
698
+ background: var(--bg-secondary);
699
+ border-radius: var(--radius-sm);
700
+ }
701
+
702
+ .subject-metric .metric-icon {
703
+ font-size: var(--font-size-lg);
704
+ }
705
+
706
+ .subject-metric .metric-name {
707
+ font-size: var(--font-size-sm);
708
+ font-weight: var(--font-weight-medium);
709
+ color: var(--text-primary);
710
+ }
711
+
712
+ .subject-metric .metric-detail {
713
+ font-size: var(--font-size-xs);
714
+ color: var(--text-muted);
715
+ }
716
+
717
+ .types-grid {
718
+ display: flex;
719
+ flex-direction: column;
720
+ gap: var(--spacing-sm);
721
+ }
722
+
723
+ .type-item {
724
+ display: grid;
725
+ grid-template-columns: 100px 1fr 120px;
726
+ align-items: center;
727
+ gap: var(--spacing-md);
728
+ }
729
+
730
+ .type-label {
731
+ font-size: var(--font-size-sm);
732
+ color: var(--text-link);
733
+ font-weight: var(--font-weight-semibold);
734
+ }
735
+
736
+ .type-bar-container {
737
+ height: 6px;
738
+ background: var(--border-subtle);
739
+ border-radius: var(--radius-sm);
740
+ overflow: hidden;
741
+ }
742
+
743
+ .type-bar {
744
+ height: 100%;
745
+ background: var(--accent-blue);
746
+ border-radius: var(--radius-sm);
747
+ transition: width 0.3s ease;
748
+ }
749
+
750
+ .type-count {
751
+ font-size: var(--font-size-sm);
752
+ color: var(--text-secondary);
753
+ text-align: right;
754
+ }
755
+
756
+ /* === Quality Improvements === */
757
+ .quality-improvements {
758
+ padding: var(--spacing-md);
759
+ background: rgba(88, 166, 255, 0.1);
760
+ border: 1px solid var(--accent-blue);
761
+ border-radius: var(--radius-md);
762
+ margin: var(--spacing-md) 0;
763
+ }
764
+
765
+ .improvements-list {
766
+ margin: var(--spacing-sm) 0 0 var(--spacing-md);
767
+ color: var(--text-secondary);
768
+ font-size: var(--font-size-sm);
769
+ }
770
+
771
+ .improvements-list li {
772
+ margin-bottom: var(--spacing-sm);
773
+ }
774
+
775
+ .improvement-tips {
776
+ margin-top: var(--spacing-md);
777
+ padding: var(--spacing-md);
778
+ background: var(--bg-secondary);
779
+ border: 1px solid var(--border-default);
780
+ border-radius: var(--radius-md);
781
+ border-left: 3px solid var(--accent-blue);
782
+ }
783
+
784
+ .improvement-tips h3 {
785
+ font-size: var(--font-size-md);
786
+ color: var(--accent-blue);
787
+ margin-bottom: var(--spacing-sm);
788
+ }
789
+
790
+ .improvement-tips ul {
791
+ margin: 0;
792
+ padding-left: var(--spacing-md);
793
+ }
794
+
795
+ .improvement-tips li {
796
+ color: var(--text-primary);
797
+ font-size: var(--font-size-sm);
798
+ line-height: 1.6;
799
+ margin-bottom: var(--spacing-sm);
800
+ }
801
+
802
+ /* === Code Hygiene (formerly Shame Metrics) === */
803
+ .shame-metrics,
804
+ .code-hygiene {
805
+ margin: var(--spacing-md) 0;
806
+ padding: var(--spacing-md);
807
+ background: rgba(158, 106, 3, 0.05);
808
+ border: 1px solid var(--border-default);
809
+ border-radius: var(--radius-md);
810
+ cursor: pointer;
811
+ }
812
+
813
+ .shame-metrics summary,
814
+ .code-hygiene summary {
815
+ font-size: var(--font-size-md);
816
+ color: var(--text-primary);
817
+ user-select: none;
818
+ list-style: none;
819
+ display: flex;
820
+ align-items: center;
821
+ gap: var(--spacing-sm);
822
+ }
823
+
824
+ .shame-metrics summary::-webkit-details-marker,
825
+ .code-hygiene summary::-webkit-details-marker {
826
+ display: none;
827
+ }
828
+
829
+ .shame-content,
830
+ .code-hygiene-content {
831
+ margin-top: var(--spacing-md);
832
+ padding-top: var(--spacing-md);
833
+ border-top: 1px solid var(--border-default);
834
+ }
835
+
836
+ .shame-item,
837
+ .hygiene-item {
838
+ padding: var(--spacing-sm);
839
+ margin-bottom: var(--spacing-sm);
840
+ color: var(--text-secondary);
841
+ font-size: var(--font-size-sm);
842
+ }
843
+
844
+ /* === File Hotspots Section === */
845
+ .file-hotspots-section {
846
+ margin-top: var(--spacing-xl);
847
+ padding-top: var(--spacing-lg);
848
+ border-top: 1px solid var(--border-default);
849
+ }
850
+
851
+ .file-hotspots-section h2 {
852
+ font-size: var(--font-size-xl);
853
+ margin-bottom: var(--spacing-md);
854
+ color: var(--text-primary);
855
+ }
856
+
857
+ .file-hotspots-section h3 {
858
+ font-size: var(--font-size-md);
859
+ margin-bottom: var(--spacing-md);
860
+ color: var(--text-secondary);
861
+ text-transform: uppercase;
862
+ letter-spacing: 0.5px;
863
+ font-weight: var(--font-weight-medium);
864
+ }
865
+
866
+ .hotspots-grid {
867
+ display: grid;
868
+ grid-template-columns: 1fr 1fr;
869
+ gap: var(--spacing-md);
870
+ margin-bottom: var(--spacing-md);
871
+ }
872
+
873
+ .top-files-panel, .technical-debt-panel {
874
+ background: var(--bg-primary);
875
+ border: 1px solid var(--border-default);
876
+ border-radius: var(--radius-md);
877
+ padding: var(--spacing-md);
878
+ }
879
+
880
+ .file-list, .debt-list {
881
+ display: flex;
882
+ flex-direction: column;
883
+ gap: var(--spacing-sm);
884
+ }
885
+
886
+ .file-item {
887
+ padding: var(--spacing-sm);
888
+ background: var(--bg-secondary);
889
+ border-radius: var(--radius-md);
890
+ border: 1px solid var(--border-default);
891
+ }
892
+
893
+ .file-path {
894
+ font-family: var(--font-mono);
895
+ font-size: var(--font-size-sm);
896
+ color: var(--text-link);
897
+ margin-bottom: var(--spacing-xs);
898
+ overflow: hidden;
899
+ text-overflow: ellipsis;
900
+ white-space: nowrap;
901
+ }
902
+
903
+ .file-stats {
904
+ display: flex;
905
+ gap: var(--spacing-sm);
906
+ margin-bottom: var(--spacing-sm);
907
+ font-size: var(--font-size-xs);
908
+ color: var(--text-secondary);
909
+ }
910
+
911
+ .change-count, .author-count {
912
+ padding: 2px 6px;
913
+ background: var(--border-subtle);
914
+ border-radius: var(--radius-sm);
915
+ }
916
+
917
+ .complexity-badge {
918
+ padding: 2px 6px;
919
+ border-radius: var(--radius-sm);
920
+ font-weight: var(--font-weight-semibold);
921
+ }
922
+
923
+ .complexity-critical { background: var(--status-danger); color: white; }
924
+ .complexity-high { background: #f0883e; color: white; }
925
+ .complexity-medium { background: var(--status-warning); color: white; }
926
+ .complexity-low { background: var(--status-success); color: white; }
927
+
928
+ .file-bar {
929
+ height: 4px;
930
+ background: var(--border-subtle);
931
+ border-radius: var(--radius-sm);
932
+ overflow: hidden;
933
+ }
934
+
935
+ .file-bar-fill {
936
+ height: 100%;
937
+ background: var(--status-danger);
938
+ transition: width 0.3s;
939
+ }
940
+
941
+ .debt-item {
942
+ padding: var(--spacing-sm);
943
+ background: var(--bg-secondary);
944
+ border-radius: var(--radius-md);
945
+ border-left: 3px solid var(--border-default);
946
+ }
947
+
948
+ .debt-item.debt-critical { border-left-color: var(--status-danger); }
949
+ .debt-item.debt-high { border-left-color: #f0883e; }
950
+ .debt-item.debt-medium { border-left-color: var(--status-warning); }
951
+
952
+ .debt-header {
953
+ display: flex;
954
+ align-items: center;
955
+ gap: var(--spacing-sm);
956
+ margin-bottom: var(--spacing-xs);
957
+ }
958
+
959
+ .debt-icon {
960
+ font-size: var(--font-size-md);
961
+ }
962
+
963
+ .debt-file {
964
+ font-family: var(--font-mono);
965
+ font-size: var(--font-size-xs);
966
+ color: var(--text-link);
967
+ overflow: hidden;
968
+ text-overflow: ellipsis;
969
+ white-space: nowrap;
970
+ }
971
+
972
+ .debt-details {
973
+ display: flex;
974
+ gap: var(--spacing-sm);
975
+ margin-bottom: var(--spacing-xs);
976
+ font-size: 10px;
977
+ }
978
+
979
+ .debt-risk {
980
+ padding: 2px 6px;
981
+ background: var(--border-subtle);
982
+ border-radius: var(--radius-sm);
983
+ color: var(--status-danger);
984
+ font-weight: var(--font-weight-semibold);
985
+ }
986
+
987
+ .debt-score {
988
+ padding: 2px 6px;
989
+ background: var(--border-subtle);
990
+ border-radius: var(--radius-sm);
991
+ color: var(--text-secondary);
992
+ }
993
+
994
+ .debt-recommendation {
995
+ font-size: var(--font-size-xs);
996
+ color: var(--text-secondary);
997
+ padding-top: var(--spacing-xs);
998
+ border-top: 1px solid var(--border-subtle);
999
+ }
1000
+
1001
+ /* === Ownership Risks === */
1002
+ .ownership-risks-panel {
1003
+ margin-top: var(--spacing-md);
1004
+ background: var(--bg-primary);
1005
+ border: 1px solid var(--border-default);
1006
+ border-radius: var(--radius-md);
1007
+ padding: var(--spacing-md);
1008
+ }
1009
+
1010
+ .ownership-list {
1011
+ display: grid;
1012
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
1013
+ gap: var(--spacing-sm);
1014
+ }
1015
+
1016
+ .ownership-item {
1017
+ padding: var(--spacing-sm);
1018
+ background: var(--bg-secondary);
1019
+ border-radius: var(--radius-md);
1020
+ border-left: 3px solid var(--status-warning);
1021
+ }
1022
+
1023
+ .ownership-item.risk-critical {
1024
+ border-left-color: var(--status-danger);
1025
+ }
1026
+
1027
+ .ownership-header {
1028
+ display: flex;
1029
+ align-items: center;
1030
+ gap: var(--spacing-sm);
1031
+ margin-bottom: var(--spacing-sm);
1032
+ }
1033
+
1034
+ .ownership-icon {
1035
+ font-size: var(--font-size-md);
1036
+ }
1037
+
1038
+ .ownership-file {
1039
+ font-family: var(--font-mono);
1040
+ font-size: var(--font-size-xs);
1041
+ color: var(--text-link);
1042
+ overflow: hidden;
1043
+ text-overflow: ellipsis;
1044
+ white-space: nowrap;
1045
+ flex: 1;
1046
+ }
1047
+
1048
+ .ownership-owner {
1049
+ font-size: var(--font-size-sm);
1050
+ color: var(--text-primary);
1051
+ margin-bottom: var(--spacing-xs);
1052
+ }
1053
+
1054
+ .ownership-others {
1055
+ font-size: 10px;
1056
+ color: var(--text-secondary);
1057
+ }
1058
+
1059
+ /* === Developer Analysis === */
1060
+ .developer-analysis {
1061
+ margin-top: var(--spacing-xl);
1062
+ padding-top: var(--spacing-lg);
1063
+ border-top: 1px solid var(--border-default);
1064
+ }
1065
+
1066
+ .developer-analysis h2 {
1067
+ font-size: var(--font-size-xl);
1068
+ margin-bottom: var(--spacing-md);
1069
+ color: var(--text-primary);
1070
+ }
1071
+
1072
+ .developer-row {
1073
+ margin-bottom: var(--spacing-md);
1074
+ padding: var(--spacing-md);
1075
+ background: var(--bg-primary);
1076
+ border: 1px solid var(--border-default);
1077
+ border-radius: var(--radius-md);
1078
+ transition: border-color var(--transition-fast);
1079
+ }
1080
+
1081
+ .developer-row:hover {
1082
+ border-color: var(--border-emphasis);
1083
+ }
1084
+
1085
+ .developer-info {
1086
+ margin-bottom: var(--spacing-sm);
1087
+ }
1088
+
1089
+ .developer-name {
1090
+ font-size: var(--font-size-lg);
1091
+ font-weight: var(--font-weight-semibold);
1092
+ color: var(--text-link);
1093
+ margin-bottom: var(--spacing-xs);
1094
+ }
1095
+
1096
+ .developer-date-range {
1097
+ font-size: var(--font-size-sm);
1098
+ color: var(--text-secondary);
1099
+ }
1100
+
1101
+ .developer-stats {
1102
+ display: flex;
1103
+ align-items: center;
1104
+ gap: var(--spacing-md);
1105
+ }
1106
+
1107
+ .developer-bar-container {
1108
+ flex: 1;
1109
+ height: 8px;
1110
+ background: var(--border-subtle);
1111
+ border-radius: var(--radius-md);
1112
+ overflow: hidden;
1113
+ }
1114
+
1115
+ .developer-bar {
1116
+ height: 100%;
1117
+ background: var(--accent-green);
1118
+ border-radius: var(--radius-md);
1119
+ transition: width 0.3s ease;
1120
+ }
1121
+
1122
+ .developer-count {
1123
+ font-size: var(--font-size-md);
1124
+ color: var(--text-secondary);
1125
+ white-space: nowrap;
1126
+ min-width: 140px;
1127
+ text-align: right;
1128
+ }
1129
+
1130
+ /* === Enterprise Insights: Impact Analysis === */
1131
+ .impact-section,
1132
+ .knowledge-section {
1133
+ margin-top: var(--spacing-xl);
1134
+ padding-top: var(--spacing-lg);
1135
+ border-top: 1px solid var(--border-default);
1136
+ }
1137
+
1138
+ .impact-section h2,
1139
+ .knowledge-section h2 {
1140
+ font-size: var(--font-size-xl);
1141
+ margin-bottom: var(--spacing-md);
1142
+ color: var(--text-primary);
1143
+ }
1144
+
1145
+ .impact-section h3,
1146
+ .knowledge-section h3 {
1147
+ font-size: var(--font-size-lg);
1148
+ margin: var(--spacing-lg) 0 var(--spacing-md) 0;
1149
+ color: var(--text-primary);
1150
+ }
1151
+
1152
+ .impact-content {
1153
+ display: flex;
1154
+ flex-direction: column;
1155
+ gap: 8px;
1156
+ }
1157
+
1158
+ .impact-overview {
1159
+ display: flex;
1160
+ gap: var(--spacing-xl);
1161
+ align-items: flex-start;
1162
+ flex-wrap: wrap;
1163
+ }
1164
+
1165
+ .impact-score-display {
1166
+ display: flex;
1167
+ flex-direction: column;
1168
+ align-items: center;
1169
+ padding: var(--spacing-lg);
1170
+ background: var(--bg-primary);
1171
+ border: 1px solid var(--border-default);
1172
+ border-radius: var(--radius-md);
1173
+ min-width: 140px;
1174
+ }
1175
+
1176
+ .impact-score-display .score-circle {
1177
+ display: flex;
1178
+ align-items: baseline;
1179
+ margin-bottom: var(--spacing-sm);
1180
+ }
1181
+
1182
+ .impact-score-display .score-value {
1183
+ font-size: 48px;
1184
+ font-weight: var(--font-weight-semibold);
1185
+ color: var(--accent-blue);
1186
+ }
1187
+
1188
+ .impact-score-display .score-max {
1189
+ font-size: var(--font-size-lg);
1190
+ color: var(--text-muted);
1191
+ margin-left: 2px;
1192
+ }
1193
+
1194
+ .impact-score-display .score-meta {
1195
+ display: flex;
1196
+ flex-direction: column;
1197
+ align-items: center;
1198
+ gap: var(--spacing-xs);
1199
+ }
1200
+
1201
+ .impact-score-display .score-label {
1202
+ font-size: var(--font-size-sm);
1203
+ color: var(--text-secondary);
1204
+ text-transform: uppercase;
1205
+ letter-spacing: 0.5px;
1206
+ }
1207
+
1208
+ .impact-score-display .score-trend {
1209
+ font-size: var(--font-size-sm);
1210
+ font-weight: var(--font-weight-medium);
1211
+ }
1212
+
1213
+ .score-trend.trend-up { color: var(--accent-green); }
1214
+ .score-trend.trend-down { color: var(--status-danger); }
1215
+ .score-trend.trend-stable { color: var(--text-muted); }
1216
+
1217
+ .impact-breakdown {
1218
+ flex: 1;
1219
+ min-width: 250px;
1220
+ margin-top: 0;
1221
+ }
1222
+
1223
+ .impact-breakdown h3 {
1224
+ margin-top: 0;
1225
+ }
1226
+
1227
+ .breakdown-items {
1228
+ display: flex;
1229
+ flex-direction: column;
1230
+ gap: var(--spacing-md);
1231
+ margin-top: var(--spacing-sm);
1232
+ }
1233
+
1234
+ .breakdown-item {
1235
+ display: flex;
1236
+ flex-direction: column;
1237
+ gap: var(--spacing-xs);
1238
+ }
1239
+
1240
+ .breakdown-header {
1241
+ display: flex;
1242
+ justify-content: space-between;
1243
+ font-size: var(--font-size-sm);
1244
+ }
1245
+
1246
+ .breakdown-label { color: var(--text-secondary); }
1247
+ .breakdown-value { color: var(--text-primary); font-weight: var(--font-weight-medium); }
1248
+
1249
+ .info-tooltip {
1250
+ color: var(--text-muted);
1251
+ cursor: help;
1252
+ font-size: 0.85em;
1253
+ margin-left: 4px;
1254
+ opacity: 0.6;
1255
+ transition: opacity 0.2s;
1256
+ }
1257
+
1258
+ .info-tooltip:hover {
1259
+ opacity: 1;
1260
+ }
1261
+
1262
+ .breakdown-bar {
1263
+ height: 8px;
1264
+ background: var(--border-subtle);
1265
+ border-radius: var(--radius-md);
1266
+ overflow: hidden;
1267
+ }
1268
+
1269
+ .breakdown-fill {
1270
+ height: 100%;
1271
+ border-radius: var(--radius-md);
1272
+ transition: width 0.3s ease;
1273
+ }
1274
+
1275
+ .breakdown-fill.core { background: var(--accent-purple); }
1276
+ .breakdown-fill.feature { background: var(--accent-blue); }
1277
+ .breakdown-fill.maintenance { background: var(--accent-green); }
1278
+ .breakdown-fill.docs { background: var(--tier-gold); }
1279
+
1280
+ /* Data Tables */
1281
+ .data-table {
1282
+ width: 100%;
1283
+ border-collapse: collapse;
1284
+ font-size: var(--font-size-sm);
1285
+ margin-top: var(--spacing-md);
1286
+ }
1287
+
1288
+ .data-table th {
1289
+ text-align: left;
1290
+ padding: var(--spacing-sm);
1291
+ border-bottom: 1px solid var(--border-default);
1292
+ color: var(--text-secondary);
1293
+ font-weight: var(--font-weight-medium);
1294
+ text-transform: uppercase;
1295
+ font-size: var(--font-size-xs);
1296
+ letter-spacing: 0.5px;
1297
+ }
1298
+
1299
+ .data-table td {
1300
+ padding: var(--spacing-sm);
1301
+ border-bottom: 1px solid var(--border-subtle);
1302
+ color: var(--text-primary);
1303
+ }
1304
+
1305
+ .data-table tbody tr:hover {
1306
+ background: var(--bg-tertiary);
1307
+ }
1308
+
1309
+ .file-path,
1310
+ .dir-path {
1311
+ font-family: var(--font-mono);
1312
+ font-size: var(--font-size-xs);
1313
+ color: var(--text-secondary);
1314
+ }
1315
+
1316
+ .category-badge {
1317
+ display: inline-block;
1318
+ padding: 2px 6px;
1319
+ border-radius: var(--radius-sm);
1320
+ font-size: 10px;
1321
+ font-weight: var(--font-weight-medium);
1322
+ text-transform: uppercase;
1323
+ }
1324
+
1325
+ .category-badge.core { background: rgba(139, 92, 246, 0.2); color: var(--accent-purple); }
1326
+ .category-badge.feature { background: rgba(88, 166, 255, 0.2); color: var(--accent-blue); }
1327
+ .category-badge.test { background: rgba(63, 185, 80, 0.2); color: var(--accent-green); }
1328
+ .category-badge.config { background: rgba(212, 167, 44, 0.2); color: var(--tier-gold); }
1329
+ .category-badge.docs { background: rgba(139, 148, 158, 0.2); color: var(--text-secondary); }
1330
+
1331
+ .impact-badge {
1332
+ display: inline-block;
1333
+ padding: 2px 8px;
1334
+ background: var(--bg-tertiary);
1335
+ border-radius: var(--radius-sm);
1336
+ font-weight: var(--font-weight-medium);
1337
+ color: var(--accent-blue);
1338
+ }
1339
+
1340
+ .impact-files {
1341
+ margin-top: var(--spacing-lg);
1342
+ }
1343
+
1344
+ .impact-files h3 {
1345
+ margin-bottom: var(--spacing-sm);
1346
+ }
1347
+
1348
+ .insights-list,
1349
+ .recommendations {
1350
+ margin-top: var(--spacing-lg);
1351
+ padding: var(--spacing-md);
1352
+ background: var(--bg-primary);
1353
+ border: 1px solid var(--border-default);
1354
+ border-radius: var(--radius-md);
1355
+ }
1356
+
1357
+ .insights-list ul,
1358
+ .recommendations ul {
1359
+ margin: 0;
1360
+ padding-left: var(--spacing-lg);
1361
+ color: var(--text-secondary);
1362
+ }
1363
+
1364
+ .insights-list li,
1365
+ .recommendations li {
1366
+ margin-bottom: var(--spacing-sm);
1367
+ line-height: 1.5;
1368
+ }
1369
+
1370
+ /* === Enterprise Insights: Knowledge Distribution === */
1371
+ .bus-factor-summary {
1372
+ display: flex;
1373
+ align-items: center;
1374
+ gap: var(--spacing-lg);
1375
+ padding: var(--spacing-md);
1376
+ background: var(--bg-primary);
1377
+ border: 1px solid var(--border-default);
1378
+ border-radius: var(--radius-md);
1379
+ margin-bottom: var(--spacing-lg);
1380
+ }
1381
+
1382
+ .risk-indicator {
1383
+ display: flex;
1384
+ align-items: baseline;
1385
+ padding: var(--spacing-md);
1386
+ border-radius: var(--radius-md);
1387
+ min-width: 80px;
1388
+ justify-content: center;
1389
+ }
1390
+
1391
+ .risk-indicator .risk-value {
1392
+ font-size: 32px;
1393
+ font-weight: var(--font-weight-semibold);
1394
+ }
1395
+
1396
+ .risk-indicator .risk-scale {
1397
+ font-size: var(--font-size-md);
1398
+ opacity: 0.7;
1399
+ }
1400
+
1401
+ .risk-indicator.risk-critical { background: rgba(218, 54, 51, 0.2); color: var(--status-danger); }
1402
+ .risk-indicator.risk-high { background: rgba(240, 136, 62, 0.2); color: #f0883e; }
1403
+ .risk-indicator.risk-medium { background: rgba(158, 106, 3, 0.2); color: var(--tier-gold); }
1404
+ .risk-indicator.risk-low { background: rgba(35, 134, 54, 0.2); color: var(--accent-green); }
1405
+
1406
+ .risk-meta {
1407
+ display: flex;
1408
+ flex-direction: column;
1409
+ gap: var(--spacing-xs);
1410
+ }
1411
+
1412
+ .risk-label {
1413
+ font-size: var(--font-size-sm);
1414
+ color: var(--text-secondary);
1415
+ text-transform: uppercase;
1416
+ letter-spacing: 0.5px;
1417
+ }
1418
+
1419
+ .risk-level {
1420
+ font-size: var(--font-size-md);
1421
+ font-weight: var(--font-weight-semibold);
1422
+ color: var(--text-primary);
1423
+ }
1424
+
1425
+ .ownership-bar-mini {
1426
+ display: inline-block;
1427
+ width: 60px;
1428
+ height: 6px;
1429
+ background: var(--border-subtle);
1430
+ border-radius: var(--radius-sm);
1431
+ overflow: hidden;
1432
+ vertical-align: middle;
1433
+ margin-right: var(--spacing-xs);
1434
+ }
1435
+
1436
+ .ownership-fill {
1437
+ height: 100%;
1438
+ background: var(--accent-blue);
1439
+ border-radius: var(--radius-sm);
1440
+ }
1441
+
1442
+ .ownership-percent {
1443
+ font-size: var(--font-size-xs);
1444
+ color: var(--text-muted);
1445
+ }
1446
+
1447
+ .ownership-type {
1448
+ display: inline-block;
1449
+ padding: 2px 6px;
1450
+ border-radius: var(--radius-sm);
1451
+ font-size: 10px;
1452
+ font-weight: var(--font-weight-medium);
1453
+ text-transform: uppercase;
1454
+ }
1455
+
1456
+ .ownership-type.type-solo { background: rgba(218, 54, 51, 0.2); color: var(--status-danger); }
1457
+ .ownership-type.type-primary { background: rgba(240, 136, 62, 0.2); color: #f0883e; }
1458
+ .ownership-type.type-shared { background: rgba(158, 106, 3, 0.2); color: var(--tier-gold); }
1459
+ .ownership-type.type-collaborative { background: rgba(35, 134, 54, 0.2); color: var(--accent-green); }
1460
+
1461
+ .risk-badge {
1462
+ display: inline-block;
1463
+ padding: 2px 8px;
1464
+ border-radius: var(--radius-sm);
1465
+ font-size: var(--font-size-xs);
1466
+ font-weight: var(--font-weight-semibold);
1467
+ }
1468
+
1469
+ .risk-badge.risk-critical { background: rgba(218, 54, 51, 0.2); color: var(--status-danger); }
1470
+ .risk-badge.risk-high { background: rgba(240, 136, 62, 0.2); color: #f0883e; }
1471
+ .risk-badge.risk-medium { background: rgba(158, 106, 3, 0.2); color: var(--tier-gold); }
1472
+ .risk-badge.risk-low { background: rgba(35, 134, 54, 0.2); color: var(--accent-green); }
1473
+
1474
+ .knowledge-warnings,
1475
+ .shared-knowledge {
1476
+ margin-top: var(--spacing-lg);
1477
+ padding: var(--spacing-md);
1478
+ border-radius: var(--radius-md);
1479
+ }
1480
+
1481
+ .knowledge-warnings {
1482
+ background: rgba(218, 54, 51, 0.05);
1483
+ border: 1px solid rgba(218, 54, 51, 0.3);
1484
+ }
1485
+
1486
+ .shared-knowledge {
1487
+ background: rgba(35, 134, 54, 0.05);
1488
+ border: 1px solid rgba(35, 134, 54, 0.3);
1489
+ }
1490
+
1491
+ .warning-intro,
1492
+ .success-intro {
1493
+ font-size: var(--font-size-sm);
1494
+ color: var(--text-secondary);
1495
+ margin-bottom: var(--spacing-sm);
1496
+ }
1497
+
1498
+ .silo-list,
1499
+ .shared-list {
1500
+ margin: 0;
1501
+ padding-left: var(--spacing-lg);
1502
+ font-size: var(--font-size-sm);
1503
+ color: var(--text-primary);
1504
+ }
1505
+
1506
+ .silo-list li,
1507
+ .shared-list li {
1508
+ margin-bottom: var(--spacing-xs);
1509
+ font-family: var(--font-mono);
1510
+ }
1511
+