heyiam 0.2.29 → 0.3.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 (177) hide show
  1. package/README.md +45 -0
  2. package/dist/config.js +10 -1
  3. package/dist/db.js +1 -2
  4. package/dist/export.js +40 -25
  5. package/dist/format-utils.js +5 -0
  6. package/dist/index.js +168 -0
  7. package/dist/mount.js +300 -102
  8. package/dist/parsers/claude.js +2 -28
  9. package/dist/parsers/codex.js +2 -26
  10. package/dist/parsers/cursor.js +2 -26
  11. package/dist/parsers/duration.js +35 -0
  12. package/dist/parsers/gemini.js +2 -20
  13. package/dist/parsers/types.js +0 -1
  14. package/dist/public/assets/index-BZ65TU_Y.js +40 -0
  15. package/dist/public/assets/index-CqCaW2cb.css +1 -0
  16. package/dist/public/index.html +2 -2
  17. package/dist/redact.js +4 -104
  18. package/dist/render/build-render-data.js +9 -2
  19. package/dist/render/index.js +32 -5
  20. package/dist/render/liquid.js +147 -7
  21. package/dist/render/mock-data.js +303 -0
  22. package/dist/render/templates/aurora/portfolio.liquid +204 -0
  23. package/dist/render/templates/aurora/project.liquid +260 -0
  24. package/dist/render/templates/aurora/session.liquid +223 -0
  25. package/dist/render/templates/aurora/styles.css +1178 -0
  26. package/dist/render/templates/bauhaus/portfolio.liquid +179 -0
  27. package/dist/render/templates/bauhaus/project.liquid +300 -0
  28. package/dist/render/templates/bauhaus/session.liquid +333 -0
  29. package/dist/render/templates/bauhaus/styles.css +1641 -0
  30. package/dist/render/templates/blueprint/portfolio.liquid +167 -0
  31. package/dist/render/templates/blueprint/project.liquid +286 -0
  32. package/dist/render/templates/blueprint/session.liquid +248 -0
  33. package/dist/render/templates/blueprint/styles.css +1285 -0
  34. package/dist/render/templates/canvas/portfolio.liquid +215 -0
  35. package/dist/render/templates/canvas/project.liquid +235 -0
  36. package/dist/render/templates/canvas/session.liquid +223 -0
  37. package/dist/render/templates/canvas/styles.css +1436 -0
  38. package/dist/render/templates/carbon/portfolio.liquid +170 -0
  39. package/dist/render/templates/carbon/project.liquid +249 -0
  40. package/dist/render/templates/carbon/session.liquid +190 -0
  41. package/dist/render/templates/carbon/styles.css +1091 -0
  42. package/dist/render/templates/chalk/portfolio.liquid +199 -0
  43. package/dist/render/templates/chalk/project.liquid +245 -0
  44. package/dist/render/templates/chalk/session.liquid +215 -0
  45. package/dist/render/templates/chalk/styles.css +1157 -0
  46. package/dist/render/templates/circuit/portfolio.liquid +162 -0
  47. package/dist/render/templates/circuit/project.liquid +247 -0
  48. package/dist/render/templates/circuit/session.liquid +205 -0
  49. package/dist/render/templates/circuit/styles.css +1403 -0
  50. package/dist/render/templates/cosmos/portfolio.liquid +232 -0
  51. package/dist/render/templates/cosmos/project.liquid +327 -0
  52. package/dist/render/templates/cosmos/session.liquid +239 -0
  53. package/dist/render/templates/cosmos/styles.css +1151 -0
  54. package/dist/render/templates/daylight/portfolio.liquid +217 -0
  55. package/dist/render/templates/daylight/project.liquid +229 -0
  56. package/dist/render/templates/daylight/session.liquid +219 -0
  57. package/dist/render/templates/daylight/styles.css +1311 -0
  58. package/dist/render/templates/editorial/portfolio.liquid +126 -0
  59. package/dist/render/templates/editorial/project.liquid +202 -0
  60. package/dist/render/templates/editorial/session.liquid +171 -0
  61. package/dist/render/templates/editorial/styles.css +822 -0
  62. package/dist/render/templates/ember/portfolio.liquid +318 -0
  63. package/dist/render/templates/ember/project.liquid +232 -0
  64. package/dist/render/templates/ember/session.liquid +202 -0
  65. package/dist/render/templates/ember/styles.css +1283 -0
  66. package/dist/render/templates/glacier/portfolio.liquid +271 -0
  67. package/dist/render/templates/glacier/project.liquid +288 -0
  68. package/dist/render/templates/glacier/session.liquid +217 -0
  69. package/dist/render/templates/glacier/styles.css +1200 -0
  70. package/dist/render/templates/grid/portfolio.liquid +265 -0
  71. package/dist/render/templates/grid/project.liquid +306 -0
  72. package/dist/render/templates/grid/session.liquid +260 -0
  73. package/dist/render/templates/grid/styles.css +1441 -0
  74. package/dist/render/templates/kinetic/portfolio.liquid +170 -0
  75. package/dist/render/templates/kinetic/project.liquid +242 -0
  76. package/dist/render/templates/kinetic/session.liquid +228 -0
  77. package/dist/render/templates/kinetic/styles.css +944 -0
  78. package/dist/render/templates/meridian/portfolio.liquid +255 -0
  79. package/dist/render/templates/meridian/project.liquid +376 -0
  80. package/dist/render/templates/meridian/session.liquid +298 -0
  81. package/dist/render/templates/meridian/styles.css +1369 -0
  82. package/dist/render/templates/minimal/portfolio.liquid +71 -0
  83. package/dist/render/templates/minimal/project.liquid +154 -0
  84. package/dist/render/templates/minimal/session.liquid +140 -0
  85. package/dist/render/templates/minimal/styles.css +525 -0
  86. package/dist/render/templates/mono/portfolio.liquid +291 -0
  87. package/dist/render/templates/mono/project.liquid +275 -0
  88. package/dist/render/templates/mono/session.liquid +276 -0
  89. package/dist/render/templates/mono/styles.css +1016 -0
  90. package/dist/render/templates/neon/portfolio.liquid +217 -0
  91. package/dist/render/templates/neon/project.liquid +225 -0
  92. package/dist/render/templates/neon/session.liquid +195 -0
  93. package/dist/render/templates/neon/styles.css +1265 -0
  94. package/dist/render/templates/noir/portfolio.liquid +137 -0
  95. package/dist/render/templates/noir/project.liquid +220 -0
  96. package/dist/render/templates/noir/session.liquid +241 -0
  97. package/dist/render/templates/noir/styles.css +1223 -0
  98. package/dist/render/templates/obsidian/portfolio.liquid +257 -0
  99. package/dist/render/templates/obsidian/project.liquid +280 -0
  100. package/dist/render/templates/obsidian/session.liquid +241 -0
  101. package/dist/render/templates/obsidian/styles.css +1401 -0
  102. package/dist/render/templates/paper/portfolio.liquid +267 -0
  103. package/dist/render/templates/paper/project.liquid +235 -0
  104. package/dist/render/templates/paper/session.liquid +271 -0
  105. package/dist/render/templates/paper/styles.css +1509 -0
  106. package/dist/render/templates/parallax/portfolio.liquid +305 -0
  107. package/dist/render/templates/parallax/project.liquid +275 -0
  108. package/dist/render/templates/parallax/session.liquid +295 -0
  109. package/dist/render/templates/parallax/styles.css +1874 -0
  110. package/dist/render/templates/parchment/portfolio.liquid +290 -0
  111. package/dist/render/templates/parchment/project.liquid +289 -0
  112. package/dist/render/templates/parchment/session.liquid +346 -0
  113. package/dist/render/templates/parchment/styles.css +1397 -0
  114. package/dist/render/templates/partials/_beats.liquid +16 -0
  115. package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
  116. package/dist/render/templates/partials/_footer.liquid +7 -0
  117. package/dist/render/templates/partials/_growth-chart.liquid +7 -0
  118. package/dist/render/templates/partials/_key-decisions.liquid +20 -0
  119. package/dist/render/templates/partials/_links.liquid +16 -0
  120. package/dist/render/templates/partials/_narrative.liquid +8 -0
  121. package/dist/render/templates/partials/_phases.liquid +20 -0
  122. package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
  123. package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
  124. package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
  125. package/dist/render/templates/partials/_qa.liquid +13 -0
  126. package/dist/render/templates/partials/_screenshot.liquid +15 -0
  127. package/dist/render/templates/partials/_session-cards.liquid +30 -0
  128. package/dist/render/templates/partials/_session-header.liquid +39 -0
  129. package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
  130. package/dist/render/templates/partials/_skills.liquid +12 -0
  131. package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
  132. package/dist/render/templates/partials/_stats.liquid +38 -0
  133. package/dist/render/templates/partials/_work-timeline.liquid +7 -0
  134. package/dist/render/templates/project.liquid +7 -4
  135. package/dist/render/templates/radar/portfolio.liquid +233 -0
  136. package/dist/render/templates/radar/project.liquid +278 -0
  137. package/dist/render/templates/radar/session.liquid +300 -0
  138. package/dist/render/templates/radar/styles.css +1049 -0
  139. package/dist/render/templates/showcase/portfolio.liquid +231 -0
  140. package/dist/render/templates/showcase/project.liquid +237 -0
  141. package/dist/render/templates/showcase/session.liquid +210 -0
  142. package/dist/render/templates/showcase/styles.css +1279 -0
  143. package/dist/render/templates/signal/portfolio.liquid +227 -0
  144. package/dist/render/templates/signal/project.liquid +278 -0
  145. package/dist/render/templates/signal/session.liquid +282 -0
  146. package/dist/render/templates/signal/styles.css +1395 -0
  147. package/dist/render/templates/strata/portfolio.liquid +192 -0
  148. package/dist/render/templates/strata/project.liquid +282 -0
  149. package/dist/render/templates/strata/session.liquid +261 -0
  150. package/dist/render/templates/strata/styles.css +1350 -0
  151. package/dist/render/templates/styles.css +1190 -0
  152. package/dist/render/templates/terminal/portfolio.liquid +118 -0
  153. package/dist/render/templates/terminal/project.liquid +161 -0
  154. package/dist/render/templates/terminal/session.liquid +145 -0
  155. package/dist/render/templates/terminal/styles.css +492 -0
  156. package/dist/render/templates/verdant/portfolio.liquid +333 -0
  157. package/dist/render/templates/verdant/project.liquid +309 -0
  158. package/dist/render/templates/verdant/session.liquid +237 -0
  159. package/dist/render/templates/verdant/styles.css +1257 -0
  160. package/dist/render/templates/zen/portfolio.liquid +136 -0
  161. package/dist/render/templates/zen/project.liquid +187 -0
  162. package/dist/render/templates/zen/session.liquid +203 -0
  163. package/dist/render/templates/zen/styles.css +1207 -0
  164. package/dist/render/templates.js +90 -0
  165. package/dist/routes/context.js +15 -10
  166. package/dist/routes/enhance.js +17 -40
  167. package/dist/routes/export.js +14 -4
  168. package/dist/routes/preview.js +480 -108
  169. package/dist/routes/projects.js +11 -19
  170. package/dist/routes/publish.js +15 -17
  171. package/dist/routes/settings.js +94 -1
  172. package/dist/routes/sse.js +9 -0
  173. package/dist/server.js +8 -2
  174. package/dist/settings.js +17 -9
  175. package/package.json +2 -4
  176. package/dist/public/assets/index-CC9G8EF1.js +0 -21
  177. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -0,0 +1,1049 @@
1
+ /* ── Radar Template Styles ── */
2
+
3
+ :root {
4
+ --surface: #0f172a;
5
+ --surface-low: #131c31;
6
+ --surface-lowest: #1a2540;
7
+ --surface-high: #0b1120;
8
+ --on-surface: #e2e8f0;
9
+ --on-surface-variant: #64748b;
10
+ --accent: #22d3ee;
11
+ --accent-dim: rgba(34, 211, 238, 0.15);
12
+ --accent-faint: rgba(34, 211, 238, 0.06);
13
+ --outline: #1e293b;
14
+ --ghost: rgba(34, 211, 238, 0.08);
15
+ --grid-line: rgba(34, 211, 238, 0.04);
16
+ --green: #34d399;
17
+ --green-bg: rgba(52, 211, 153, 0.1);
18
+ --violet: #a78bfa;
19
+ --violet-bg: rgba(167, 139, 250, 0.1);
20
+ --font-display: 'Space Grotesk', sans-serif;
21
+ --font-body: 'Inter', sans-serif;
22
+ --font-mono: 'IBM Plex Mono', monospace;
23
+ --radius-sm: 2px;
24
+ --radius-md: 4px;
25
+ }
26
+
27
+ /* ── Dark Template Wrapper ── */
28
+ .radar {
29
+ font-family: var(--font-body);
30
+ color: var(--on-surface);
31
+ background-color: var(--surface);
32
+ background-image:
33
+ linear-gradient(var(--grid-line) 1px, transparent 1px),
34
+ linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
35
+ background-size: 40px 40px;
36
+ line-height: 1.7;
37
+ -webkit-font-smoothing: antialiased;
38
+ }
39
+
40
+ .radar a { color: var(--accent); text-decoration: none; }
41
+ .radar a:visited { color: var(--accent); }
42
+ .radar a:hover { text-decoration: underline; text-decoration-color: var(--accent-dim); }
43
+
44
+ /* ── Section Fade-In ── */
45
+ .radar-section {
46
+ margin-bottom: 2.5rem;
47
+ opacity: 0;
48
+ transform: translateY(16px);
49
+ transition: opacity 0.5s ease-out, transform 0.5s ease-out;
50
+ }
51
+ .radar-section.visible, .radar-section.is-visible {
52
+ opacity: 1;
53
+ transform: translateY(0);
54
+ }
55
+
56
+ @media (prefers-reduced-motion: reduce) {
57
+ .radar-section {
58
+ opacity: 1;
59
+ transform: none;
60
+ transition: none;
61
+ }
62
+ }
63
+
64
+ /* ── Section Labels ── */
65
+ .radar .radar-label {
66
+ font-family: var(--font-mono);
67
+ font-size: 9px;
68
+ font-weight: 500;
69
+ text-transform: uppercase;
70
+ letter-spacing: 0.1em;
71
+ color: var(--accent);
72
+ margin-bottom: 0.75rem;
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 0.5rem;
76
+ }
77
+ .radar .radar-label::before {
78
+ content: '';
79
+ display: inline-block;
80
+ width: 6px;
81
+ height: 6px;
82
+ background: var(--accent);
83
+ border-radius: 1px;
84
+ }
85
+
86
+ /* ── Breadcrumb ── */
87
+ .radar .radar-breadcrumb {
88
+ font-family: var(--font-mono);
89
+ font-size: 0.75rem;
90
+ color: var(--on-surface-variant);
91
+ margin-bottom: 1.5rem;
92
+ display: flex;
93
+ align-items: center;
94
+ gap: 0.375rem;
95
+ flex-wrap: wrap;
96
+ }
97
+ .radar .radar-breadcrumb a { color: var(--accent); }
98
+ .radar .radar-breadcrumb a:visited { color: var(--accent); }
99
+ .radar .radar-breadcrumb__sep { color: var(--on-surface-variant); }
100
+
101
+ /* ── Title ── */
102
+ .radar .radar-title {
103
+ font-family: var(--font-display);
104
+ font-size: 2.25rem;
105
+ font-weight: 700;
106
+ color: var(--on-surface);
107
+ letter-spacing: -0.03em;
108
+ margin-bottom: 0.5rem;
109
+ }
110
+
111
+ /* ── Portfolio Header ── */
112
+ .radar .portfolio-header {
113
+ display: flex;
114
+ align-items: flex-start;
115
+ gap: 1.5rem;
116
+ margin-bottom: 2rem;
117
+ }
118
+
119
+ .radar .portfolio-photo {
120
+ width: 100px;
121
+ height: 130px;
122
+ border-radius: 4px;
123
+ object-fit: cover;
124
+ object-position: 55% 10%;
125
+ border: 2px solid var(--ghost);
126
+ flex-shrink: 0;
127
+ }
128
+
129
+ .radar .portfolio-info { flex: 1; min-width: 0; }
130
+
131
+ .radar .portfolio-name {
132
+ font-family: var(--font-display);
133
+ font-size: 1.5rem;
134
+ font-weight: 700;
135
+ color: var(--on-surface);
136
+ letter-spacing: -0.02em;
137
+ margin-bottom: 0.125rem;
138
+ }
139
+
140
+ .radar .portfolio-handle {
141
+ font-family: var(--font-mono);
142
+ font-size: 0.75rem;
143
+ color: var(--accent);
144
+ margin-bottom: 0.5rem;
145
+ }
146
+
147
+ .radar .portfolio-bio {
148
+ font-size: 0.875rem;
149
+ color: var(--on-surface-variant);
150
+ line-height: 1.6;
151
+ max-width: 50ch;
152
+ }
153
+
154
+ .radar .portfolio-location {
155
+ font-family: var(--font-mono);
156
+ font-size: 0.6875rem;
157
+ color: var(--on-surface-variant);
158
+ margin-top: 0.375rem;
159
+ display: flex;
160
+ align-items: center;
161
+ gap: 0.375rem;
162
+ }
163
+ .radar .portfolio-location svg {
164
+ width: 12px;
165
+ height: 12px;
166
+ fill: none;
167
+ stroke: var(--on-surface-variant);
168
+ stroke-width: 1.5;
169
+ }
170
+
171
+ /* ── Contact Links ── */
172
+ .radar .contact-row {
173
+ display: flex;
174
+ flex-wrap: wrap;
175
+ gap: 10px 18px;
176
+ margin-top: 0.75rem;
177
+ font-family: var(--font-mono);
178
+ font-size: 0.6875rem;
179
+ }
180
+ .radar .contact-row a,
181
+ .radar .contact-row span {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ gap: 5px;
185
+ color: var(--on-surface-variant);
186
+ text-decoration: none;
187
+ transition: color 150ms ease;
188
+ }
189
+ .radar .contact-row a:hover {
190
+ color: var(--accent);
191
+ }
192
+ .radar .contact-row a:visited {
193
+ color: var(--on-surface-variant);
194
+ }
195
+ .radar .contact-row a:focus-visible {
196
+ outline: 2px solid var(--accent);
197
+ outline-offset: 2px;
198
+ border-radius: var(--radius-sm);
199
+ }
200
+ .radar .contact-row svg {
201
+ flex-shrink: 0;
202
+ }
203
+ .radar .resume-btn {
204
+ display: inline-flex;
205
+ align-items: center;
206
+ gap: 5px;
207
+ padding: 3px 10px;
208
+ border: 1px solid var(--ghost);
209
+ border-radius: var(--radius-sm);
210
+ font-family: var(--font-mono);
211
+ font-size: 0.6875rem;
212
+ color: var(--on-surface-variant);
213
+ text-decoration: none;
214
+ transition: border-color 150ms ease, color 150ms ease;
215
+ background: transparent;
216
+ }
217
+ .radar .resume-btn:hover {
218
+ border-color: var(--accent);
219
+ color: var(--accent);
220
+ }
221
+
222
+ /* ── Aggregate Stats (Portfolio) ── */
223
+ .radar .portfolio-stats {
224
+ display: flex;
225
+ gap: 0.75rem;
226
+ flex-wrap: wrap;
227
+ margin-bottom: 2.5rem;
228
+ }
229
+
230
+ .radar .portfolio-stat {
231
+ display: flex;
232
+ flex-direction: column;
233
+ align-items: center;
234
+ padding: 0.75rem 1.25rem;
235
+ background: var(--surface-lowest);
236
+ border: 1px solid var(--ghost);
237
+ border-radius: var(--radius-sm);
238
+ min-width: 100px;
239
+ }
240
+
241
+ .radar .portfolio-stat__value {
242
+ font-family: var(--font-display);
243
+ font-size: 1.25rem;
244
+ font-weight: 700;
245
+ color: var(--on-surface);
246
+ }
247
+
248
+ .radar .portfolio-stat__label {
249
+ font-family: var(--font-mono);
250
+ font-size: 9px;
251
+ text-transform: uppercase;
252
+ letter-spacing: 0.05em;
253
+ color: var(--on-surface-variant);
254
+ }
255
+ .radar .portfolio-stat--cyan {
256
+ border-color: rgba(34,211,238,0.4);
257
+ }
258
+ .radar .portfolio-stat--cyan .portfolio-stat__value {
259
+ color: var(--accent);
260
+ }
261
+
262
+ /* ── Project Cards (Portfolio) ── */
263
+ .radar .portfolio-projects {
264
+ display: grid;
265
+ grid-template-columns: repeat(3, 1fr);
266
+ gap: 0.75rem;
267
+ margin-bottom: 2.5rem;
268
+ }
269
+
270
+ .radar .portfolio-card {
271
+ background: var(--surface-lowest);
272
+ border: 1px solid var(--ghost);
273
+ border-radius: var(--radius-sm);
274
+ padding: 1rem;
275
+ transition: border-color 150ms ease;
276
+ cursor: pointer;
277
+ text-decoration: none;
278
+ color: inherit;
279
+ display: block;
280
+ }
281
+ .radar .portfolio-card:hover {
282
+ border-color: var(--accent-dim);
283
+ text-decoration: none;
284
+ }
285
+ .radar .portfolio-card:visited {
286
+ color: inherit;
287
+ }
288
+
289
+ .radar .portfolio-card__bar {
290
+ height: 2px;
291
+ border-radius: 1px;
292
+ margin-bottom: 0.75rem;
293
+ }
294
+ .radar .portfolio-card__bar--cyan { background: var(--accent); }
295
+ .radar .portfolio-card__bar--green { background: var(--green); }
296
+ .radar .portfolio-card__bar--violet { background: var(--violet); }
297
+
298
+ .radar .portfolio-card__title {
299
+ font-family: var(--font-display);
300
+ font-size: 0.875rem;
301
+ font-weight: 600;
302
+ color: var(--on-surface);
303
+ margin-bottom: 0.25rem;
304
+ }
305
+
306
+ .radar .portfolio-card__desc {
307
+ font-size: 0.75rem;
308
+ color: var(--on-surface-variant);
309
+ line-height: 1.5;
310
+ margin-bottom: 0.5rem;
311
+ display: -webkit-box;
312
+ -webkit-line-clamp: 2;
313
+ -webkit-box-orient: vertical;
314
+ overflow: hidden;
315
+ }
316
+
317
+ .radar .portfolio-card__meta {
318
+ font-family: var(--font-mono);
319
+ font-size: 0.6875rem;
320
+ color: var(--on-surface-variant);
321
+ margin-bottom: 0.5rem;
322
+ }
323
+
324
+ .radar .portfolio-card__skills {
325
+ display: flex;
326
+ flex-wrap: wrap;
327
+ gap: 0.25rem;
328
+ }
329
+
330
+ /* ── Skill Chips ── */
331
+ .radar .chip {
332
+ font-family: var(--font-mono);
333
+ font-size: 11px;
334
+ line-height: 1.2;
335
+ padding: 0.125rem 0.5rem;
336
+ border-radius: var(--radius-sm);
337
+ background: var(--accent-faint);
338
+ color: var(--accent);
339
+ border: 1px solid var(--ghost);
340
+ }
341
+
342
+ .radar .chip-list {
343
+ display: flex;
344
+ flex-wrap: wrap;
345
+ gap: 0.375rem;
346
+ }
347
+
348
+ /* ── Links (Project) ── */
349
+ .radar .radar-links {
350
+ display: flex;
351
+ align-items: center;
352
+ gap: 1.5rem;
353
+ margin-bottom: 2rem;
354
+ }
355
+ .radar .radar-link {
356
+ font-family: var(--font-mono);
357
+ font-size: 0.75rem;
358
+ color: var(--accent);
359
+ display: flex;
360
+ align-items: center;
361
+ gap: 0.375rem;
362
+ }
363
+ .radar .radar-link:visited { color: var(--accent); }
364
+ .radar .radar-link:hover {
365
+ text-decoration: underline;
366
+ text-decoration-color: var(--accent-dim);
367
+ }
368
+ .radar .radar-link svg {
369
+ width: 14px;
370
+ height: 14px;
371
+ fill: none;
372
+ stroke: var(--accent);
373
+ stroke-width: 1.5;
374
+ }
375
+
376
+ /* ── Screenshot (Project) ── */
377
+ .radar .browser-chrome {
378
+ border-radius: var(--radius-md);
379
+ border: 1px solid var(--ghost);
380
+ overflow: hidden;
381
+ background: var(--surface-low);
382
+ }
383
+ .radar .browser-chrome__bar {
384
+ display: flex;
385
+ align-items: center;
386
+ gap: 6px;
387
+ padding: 0.5rem 0.75rem;
388
+ background: var(--surface-high);
389
+ border-bottom: 1px solid var(--ghost);
390
+ }
391
+ .radar .browser-chrome__dot {
392
+ width: 10px;
393
+ height: 10px;
394
+ border-radius: 50%;
395
+ }
396
+ .radar .browser-chrome__dot--red { background: #ff5f57; }
397
+ .radar .browser-chrome__dot--yellow { background: #febc2e; }
398
+ .radar .browser-chrome__dot--green { background: #28c840; }
399
+ .radar .browser-chrome__viewport {
400
+ height: 24rem;
401
+ background: var(--surface-low);
402
+ display: flex;
403
+ align-items: center;
404
+ justify-content: center;
405
+ color: var(--on-surface-variant);
406
+ font-family: var(--font-mono);
407
+ font-size: 0.75rem;
408
+ }
409
+
410
+ /* ── Narrative ── */
411
+ .radar .radar-narrative {
412
+ border-left: 2px solid var(--accent);
413
+ padding-left: 1rem;
414
+ }
415
+ .radar .radar-narrative p {
416
+ font-size: 1rem;
417
+ color: var(--on-surface);
418
+ line-height: 1.7;
419
+ margin-bottom: 1rem;
420
+ }
421
+ .radar .radar-narrative p:last-child { margin-bottom: 0; }
422
+
423
+ /* ── Stats Grid (Project) ── */
424
+ .radar .stat-grid {
425
+ display: grid;
426
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
427
+ gap: 0.75rem;
428
+ }
429
+ .radar .stat-card {
430
+ background: var(--surface-lowest);
431
+ border: 1px solid var(--ghost);
432
+ border-radius: var(--radius-sm);
433
+ padding: 1rem;
434
+ }
435
+ .radar .stat-card__label {
436
+ font-family: var(--font-mono);
437
+ font-size: 9px;
438
+ text-transform: uppercase;
439
+ letter-spacing: 0.05em;
440
+ color: var(--on-surface-variant);
441
+ margin-bottom: 0.25rem;
442
+ }
443
+ .radar .stat-card__value {
444
+ font-family: var(--font-display);
445
+ font-size: 1.5rem;
446
+ font-weight: 700;
447
+ color: var(--on-surface);
448
+ }
449
+ .radar .stat-card--cyan {
450
+ border-color: rgba(34,211,238,0.4);
451
+ }
452
+ .radar .stat-card--cyan .stat-card__value {
453
+ color: var(--accent);
454
+ }
455
+
456
+ /* ── Chart Cards ── */
457
+ .radar .chart-card {
458
+ background: var(--surface-lowest);
459
+ border: 1px solid var(--ghost);
460
+ border-radius: var(--radius-sm);
461
+ padding: 1rem;
462
+ }
463
+
464
+ /* ── Work Timeline Bars ── */
465
+ .radar .wt-bar {
466
+ transform-origin: left center;
467
+ transform: scaleX(0);
468
+ transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
469
+ }
470
+ .radar .wt-bar.is-animated { transform: scaleX(1); }
471
+ .radar .wt-agent-line {
472
+ stroke-dasharray: 100;
473
+ stroke-dashoffset: 100;
474
+ transition: stroke-dashoffset 0.8s ease-out;
475
+ }
476
+ .radar .wt-agent-line.is-animated { stroke-dashoffset: 0; }
477
+
478
+ @media (prefers-reduced-motion: reduce) {
479
+ .radar .wt-bar { transform: scaleX(1); transition: none; }
480
+ .radar .wt-agent-line { stroke-dashoffset: 0; transition: none; }
481
+ }
482
+
483
+ /* ── Growth Chart Lines ── */
484
+ .radar .growth-line {
485
+ stroke-dasharray: var(--line-length, 2000);
486
+ stroke-dashoffset: var(--line-length, 2000);
487
+ transition: stroke-dashoffset 1.2s ease-out;
488
+ }
489
+ .radar .growth-line.is-animated { stroke-dashoffset: 0; }
490
+ .radar .growth-area {
491
+ opacity: 0;
492
+ transition: opacity 0.8s ease-out 0.4s;
493
+ }
494
+ .radar .growth-area.is-animated { opacity: 1; }
495
+
496
+ @media (prefers-reduced-motion: reduce) {
497
+ .radar .growth-line { stroke-dashoffset: 0; transition: none; }
498
+ .radar .growth-area { opacity: 1; transition: none; }
499
+ }
500
+
501
+ /* ── Two Column ── */
502
+ .radar .two-col {
503
+ display: grid;
504
+ grid-template-columns: repeat(2, 1fr);
505
+ gap: 1.5rem;
506
+ }
507
+
508
+ /* ── Key Decisions ── */
509
+ .radar .decision-list { list-style: none; }
510
+ .radar .decision-item {
511
+ padding: 0.75rem 0;
512
+ border-bottom: 1px solid var(--ghost);
513
+ }
514
+ .radar .decision-item:last-child { border-bottom: none; }
515
+ .radar .decision-bullet {
516
+ display: flex;
517
+ align-items: flex-start;
518
+ gap: 0.625rem;
519
+ }
520
+ .radar .decision-bullet::before {
521
+ content: '';
522
+ display: block;
523
+ width: 6px;
524
+ height: 6px;
525
+ background: var(--accent);
526
+ border-radius: 1px;
527
+ margin-top: 0.375rem;
528
+ flex-shrink: 0;
529
+ }
530
+ .radar .decision-title {
531
+ font-family: var(--font-display);
532
+ font-size: 0.875rem;
533
+ font-weight: 600;
534
+ color: var(--on-surface);
535
+ margin-bottom: 0.25rem;
536
+ }
537
+ .radar .decision-desc {
538
+ font-size: 0.8125rem;
539
+ color: var(--on-surface-variant);
540
+ line-height: 1.6;
541
+ }
542
+
543
+ /* ── Source Table ── */
544
+ .radar .source-table { width: 100%; border-collapse: collapse; }
545
+ .radar .source-table th {
546
+ text-align: left;
547
+ padding: 0.5rem 0;
548
+ font-family: var(--font-mono);
549
+ font-size: 9px;
550
+ text-transform: uppercase;
551
+ letter-spacing: 0.05em;
552
+ color: var(--accent);
553
+ border-bottom: 1px solid var(--ghost);
554
+ font-weight: 400;
555
+ }
556
+ .radar .source-table td {
557
+ padding: 0.5rem 0;
558
+ border-bottom: 1px solid var(--ghost);
559
+ font-family: var(--font-mono);
560
+ font-size: 0.8125rem;
561
+ color: var(--on-surface);
562
+ }
563
+ .radar .source-table td:last-child {
564
+ text-align: right;
565
+ color: var(--on-surface-variant);
566
+ }
567
+
568
+ /* ── Phase Timeline ── */
569
+ .radar .phase-timeline {
570
+ position: relative;
571
+ padding-left: 1.25rem;
572
+ }
573
+ .radar .phase-timeline__line {
574
+ position: absolute;
575
+ left: 0.25rem;
576
+ top: 0.375rem;
577
+ bottom: 0.375rem;
578
+ width: 2px;
579
+ background: var(--ghost);
580
+ border-radius: 1px;
581
+ }
582
+ .radar .phase-timeline__item {
583
+ position: relative;
584
+ padding-bottom: 1.25rem;
585
+ }
586
+ .radar .phase-timeline__item:last-child { padding-bottom: 0; }
587
+ .radar .phase-timeline__dot {
588
+ position: absolute;
589
+ left: -1.25rem;
590
+ top: 0.25rem;
591
+ width: 8px;
592
+ height: 8px;
593
+ border-radius: 50%;
594
+ background: var(--accent);
595
+ box-shadow: 0 0 0 3px var(--accent-dim);
596
+ }
597
+ .radar .phase-timeline__title {
598
+ font-family: var(--font-display);
599
+ font-size: 0.875rem;
600
+ font-weight: 600;
601
+ color: var(--on-surface);
602
+ margin-bottom: 0.25rem;
603
+ }
604
+ .radar .phase-timeline__dates {
605
+ font-family: var(--font-mono);
606
+ font-size: 0.6875rem;
607
+ color: var(--on-surface-variant);
608
+ margin-bottom: 0.25rem;
609
+ }
610
+ .radar .phase-timeline__desc {
611
+ font-size: 0.8125rem;
612
+ color: var(--on-surface-variant);
613
+ line-height: 1.6;
614
+ }
615
+
616
+ /* ── Session Cards (Project) ── */
617
+ .radar .section-header {
618
+ display: flex;
619
+ align-items: center;
620
+ justify-content: space-between;
621
+ margin-bottom: 0.75rem;
622
+ }
623
+ .radar .section-header__meta {
624
+ font-family: var(--font-mono);
625
+ font-size: 9px;
626
+ text-transform: uppercase;
627
+ letter-spacing: 0.05em;
628
+ color: var(--on-surface-variant);
629
+ }
630
+ .radar .session-grid {
631
+ display: grid;
632
+ grid-template-columns: repeat(2, 1fr);
633
+ gap: 0.75rem;
634
+ }
635
+ .radar .session-card {
636
+ background: var(--surface-lowest);
637
+ border: 1px solid var(--ghost);
638
+ border-radius: var(--radius-sm);
639
+ padding: 1rem;
640
+ transition: border-color 150ms ease, transform 0.15s ease;
641
+ cursor: pointer;
642
+ text-decoration: none;
643
+ color: inherit;
644
+ display: block;
645
+ }
646
+ .radar .session-card:visited {
647
+ color: inherit;
648
+ }
649
+ .radar .session-card:hover {
650
+ border-color: var(--accent-dim);
651
+ text-decoration: none;
652
+ transform: translateY(-2px);
653
+ }
654
+ .radar .session-card__bar {
655
+ height: 2px;
656
+ border-radius: 1px;
657
+ margin-bottom: 0.75rem;
658
+ }
659
+ .radar .session-card__bar--cyan { background: var(--accent); }
660
+ .radar .session-card__bar--green { background: var(--green); }
661
+ .radar .session-card__bar--violet { background: var(--violet); }
662
+ .radar .session-card__title {
663
+ font-family: var(--font-display);
664
+ font-size: 0.8125rem;
665
+ font-weight: 600;
666
+ color: var(--on-surface);
667
+ margin-bottom: 0.25rem;
668
+ display: -webkit-box;
669
+ -webkit-line-clamp: 2;
670
+ -webkit-box-orient: vertical;
671
+ overflow: hidden;
672
+ }
673
+ .radar .session-card__meta {
674
+ color: var(--on-surface-variant);
675
+ font-size: 0.75rem;
676
+ margin-bottom: 0.5rem;
677
+ }
678
+ .radar .session-card__tag {
679
+ font-family: var(--font-mono);
680
+ font-size: 9px;
681
+ text-transform: uppercase;
682
+ letter-spacing: 0.05em;
683
+ color: var(--accent);
684
+ background: var(--accent-faint);
685
+ border: 1px solid var(--ghost);
686
+ border-radius: var(--radius-sm);
687
+ padding: 0.0625rem 0.375rem;
688
+ display: inline-block;
689
+ margin-top: 0.375rem;
690
+ }
691
+
692
+ /* ── Session Meta (Session page) ── */
693
+ .radar .session-meta-row {
694
+ display: flex;
695
+ flex-wrap: wrap;
696
+ gap: 1.5rem;
697
+ margin-bottom: 0.75rem;
698
+ }
699
+ .radar .session-meta-item {
700
+ display: flex;
701
+ flex-direction: column;
702
+ }
703
+ .radar .session-meta-item__label {
704
+ font-family: var(--font-mono);
705
+ font-size: 9px;
706
+ text-transform: uppercase;
707
+ letter-spacing: 0.05em;
708
+ color: var(--on-surface-variant);
709
+ }
710
+ .radar .session-meta-item__value {
711
+ font-family: var(--font-display);
712
+ font-size: 0.875rem;
713
+ font-weight: 600;
714
+ color: var(--on-surface);
715
+ }
716
+
717
+ .radar .stat-grid-inline {
718
+ display: grid;
719
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
720
+ gap: 0.5rem;
721
+ }
722
+ .radar .stat-card-sm {
723
+ background: var(--surface-lowest);
724
+ border: 1px solid var(--ghost);
725
+ border-radius: var(--radius-sm);
726
+ padding: 0.75rem;
727
+ text-align: center;
728
+ }
729
+ .radar .stat-card-sm__label {
730
+ font-family: var(--font-mono);
731
+ font-size: 9px;
732
+ text-transform: uppercase;
733
+ letter-spacing: 0.05em;
734
+ color: var(--on-surface-variant);
735
+ margin-bottom: 0.125rem;
736
+ }
737
+ .radar .stat-card-sm__value {
738
+ font-family: var(--font-display);
739
+ font-size: 1.25rem;
740
+ font-weight: 700;
741
+ color: var(--on-surface);
742
+ }
743
+
744
+ /* ── Dev Take ── */
745
+ .radar .dev-take {
746
+ border-left: 2px solid var(--accent);
747
+ padding-left: 1rem;
748
+ max-width: 65ch;
749
+ }
750
+ .radar .dev-take p {
751
+ font-size: 1rem;
752
+ font-style: italic;
753
+ color: var(--on-surface);
754
+ line-height: 1.7;
755
+ }
756
+
757
+ /* ── Two Column Session Layout ── */
758
+ .radar .session-layout {
759
+ display: grid;
760
+ grid-template-columns: 1fr 280px;
761
+ gap: 2rem;
762
+ align-items: start;
763
+ }
764
+
765
+ /* ── Sidebar Card ── */
766
+ .radar .sidebar-card {
767
+ background: var(--surface-lowest);
768
+ border: 1px solid var(--ghost);
769
+ border-radius: var(--radius-sm);
770
+ padding: 1rem;
771
+ margin-bottom: 1rem;
772
+ }
773
+
774
+ /* ── Tools Table ── */
775
+ .radar .tools-table { width: 100%; border-collapse: collapse; }
776
+ .radar .tools-table th {
777
+ text-align: left;
778
+ padding: 0.375rem 0;
779
+ font-family: var(--font-mono);
780
+ font-size: 9px;
781
+ text-transform: uppercase;
782
+ letter-spacing: 0.05em;
783
+ color: var(--accent);
784
+ border-bottom: 1px solid var(--ghost);
785
+ font-weight: 400;
786
+ }
787
+ .radar .tools-table td {
788
+ padding: 0.375rem 0;
789
+ border-bottom: 1px solid var(--ghost);
790
+ font-family: var(--font-mono);
791
+ font-size: 0.8125rem;
792
+ color: var(--on-surface);
793
+ }
794
+ .radar .tools-table td:last-child {
795
+ text-align: right;
796
+ color: var(--on-surface-variant);
797
+ }
798
+
799
+ /* ── Files Table ── */
800
+ .radar .files-table { width: 100%; border-collapse: collapse; }
801
+ .radar .files-table th {
802
+ text-align: left;
803
+ padding: 0.375rem 0;
804
+ font-family: var(--font-mono);
805
+ font-size: 9px;
806
+ text-transform: uppercase;
807
+ letter-spacing: 0.05em;
808
+ color: var(--accent);
809
+ border-bottom: 1px solid var(--ghost);
810
+ font-weight: 400;
811
+ }
812
+ .radar .files-table td {
813
+ padding: 0.375rem 0;
814
+ border-bottom: 1px solid var(--ghost);
815
+ font-family: var(--font-mono);
816
+ font-size: 0.6875rem;
817
+ color: var(--on-surface);
818
+ word-break: break-all;
819
+ }
820
+ .radar .files-table td:last-child {
821
+ text-align: right;
822
+ color: var(--green);
823
+ white-space: nowrap;
824
+ padding-left: 0.5rem;
825
+ }
826
+
827
+ /* ── Execution Path / Beats ── */
828
+ .radar .beat-list {
829
+ list-style: none;
830
+ position: relative;
831
+ padding-left: 1.25rem;
832
+ }
833
+ .radar .beat-list__line {
834
+ position: absolute;
835
+ left: 0.25rem;
836
+ top: 0.375rem;
837
+ bottom: 0.375rem;
838
+ width: 2px;
839
+ background: var(--ghost);
840
+ border-radius: 1px;
841
+ }
842
+ .radar .beat-item {
843
+ position: relative;
844
+ padding-bottom: 1.5rem;
845
+ }
846
+ .radar .beat-item:last-child { padding-bottom: 0; }
847
+ .radar .beat-item__dot {
848
+ position: absolute;
849
+ left: -1.25rem;
850
+ top: 0.25rem;
851
+ width: 8px;
852
+ height: 8px;
853
+ border-radius: 50%;
854
+ background: var(--accent);
855
+ box-shadow: 0 0 0 3px var(--accent-dim);
856
+ }
857
+ .radar .beat-item__number {
858
+ font-family: var(--font-mono);
859
+ font-size: 9px;
860
+ color: var(--accent);
861
+ text-transform: uppercase;
862
+ letter-spacing: 0.05em;
863
+ margin-bottom: 0.25rem;
864
+ }
865
+ .radar .beat-item__title {
866
+ font-family: var(--font-display);
867
+ font-size: 0.875rem;
868
+ font-weight: 600;
869
+ color: var(--on-surface);
870
+ margin-bottom: 0.25rem;
871
+ }
872
+ .radar .beat-item__desc {
873
+ font-size: 0.8125rem;
874
+ color: var(--on-surface-variant);
875
+ line-height: 1.6;
876
+ }
877
+
878
+ /* ── Q&A Section ── */
879
+ .radar .qa-item {
880
+ padding: 1rem 0;
881
+ border-bottom: 1px solid var(--ghost);
882
+ }
883
+ .radar .qa-item:last-child { border-bottom: none; }
884
+ .radar .qa-question {
885
+ font-family: var(--font-display);
886
+ font-size: 0.875rem;
887
+ font-weight: 600;
888
+ color: var(--on-surface);
889
+ margin-bottom: 0.5rem;
890
+ display: flex;
891
+ align-items: flex-start;
892
+ gap: 0.5rem;
893
+ }
894
+ .radar .qa-question::before {
895
+ content: 'Q';
896
+ display: inline-flex;
897
+ align-items: center;
898
+ justify-content: center;
899
+ width: 20px;
900
+ height: 20px;
901
+ flex-shrink: 0;
902
+ font-family: var(--font-mono);
903
+ font-size: 10px;
904
+ font-weight: 500;
905
+ color: var(--accent);
906
+ background: var(--accent-faint);
907
+ border: 1px solid var(--ghost);
908
+ border-radius: var(--radius-sm);
909
+ }
910
+ .radar .qa-answer {
911
+ font-size: 0.8125rem;
912
+ color: var(--on-surface-variant);
913
+ line-height: 1.7;
914
+ padding-left: 1.75rem;
915
+ }
916
+
917
+ /* ── Agent Summary ── */
918
+ .radar .agent-layout {
919
+ display: grid;
920
+ grid-template-columns: 1fr 1fr;
921
+ gap: 1.5rem;
922
+ }
923
+ .radar .agent-table { width: 100%; border-collapse: collapse; }
924
+ .radar .agent-table th {
925
+ text-align: left;
926
+ padding: 0.5rem 0;
927
+ font-family: var(--font-mono);
928
+ font-size: 9px;
929
+ text-transform: uppercase;
930
+ letter-spacing: 0.05em;
931
+ color: var(--accent);
932
+ border-bottom: 1px solid var(--ghost);
933
+ font-weight: 400;
934
+ }
935
+ .radar .agent-table td {
936
+ padding: 0.5rem 0;
937
+ border-bottom: 1px solid var(--ghost);
938
+ font-size: 0.8125rem;
939
+ color: var(--on-surface);
940
+ }
941
+ .radar .agent-table td:nth-child(2),
942
+ .radar .agent-table td:nth-child(3) {
943
+ font-family: var(--font-mono);
944
+ text-align: right;
945
+ color: var(--on-surface-variant);
946
+ }
947
+
948
+ /* ── Agent Role Color Dots ── */
949
+ .radar .agent-dot {
950
+ display: inline-block;
951
+ width: 8px;
952
+ height: 8px;
953
+ border-radius: 50%;
954
+ margin-right: 0.5rem;
955
+ vertical-align: middle;
956
+ }
957
+ .radar .agent-dot--backend { background: #0891b2; }
958
+ .radar .agent-dot--backend-dev { background: #0891b2; }
959
+ .radar .agent-dot--qa { background: #059669; }
960
+ .radar .agent-dot--qa-engineer { background: #059669; }
961
+ .radar .agent-dot--frontend { background: #7c3aed; }
962
+ .radar .agent-dot--frontend-dev { background: #7c3aed; }
963
+ .radar .agent-dot--security { background: #475569; }
964
+ .radar .agent-dot--security-engineer { background: #475569; }
965
+ .radar .agent-dot--reviewer { background: #e11d48; }
966
+ .radar .agent-dot--code-reviewer { background: #e11d48; }
967
+
968
+ /* ── Agent Duration Bar Chart ── */
969
+ .radar .agent-bar-chart {
970
+ margin-top: 1rem;
971
+ }
972
+ .radar .agent-bar-row {
973
+ display: flex;
974
+ align-items: center;
975
+ gap: 0.5rem;
976
+ margin-bottom: 0.375rem;
977
+ }
978
+ .radar .agent-bar-row__label {
979
+ font-family: var(--font-mono);
980
+ font-size: 0.6875rem;
981
+ color: var(--on-surface-variant);
982
+ width: 100px;
983
+ text-align: right;
984
+ flex-shrink: 0;
985
+ }
986
+ .radar .agent-bar-row__bar {
987
+ height: 3px;
988
+ border-radius: 1px;
989
+ flex: 1;
990
+ max-width: 200px;
991
+ }
992
+ .radar .agent-bar-row__value {
993
+ font-family: var(--font-mono);
994
+ font-size: 0.6875rem;
995
+ color: var(--on-surface-variant);
996
+ width: 40px;
997
+ flex-shrink: 0;
998
+ }
999
+
1000
+ /* ── Footer ── */
1001
+ .radar .radar-footer {
1002
+ padding-top: 1.5rem;
1003
+ border-top: 1px solid var(--ghost);
1004
+ text-align: center;
1005
+ }
1006
+ .radar .radar-footer__text {
1007
+ font-family: var(--font-mono);
1008
+ font-size: 10px;
1009
+ color: var(--on-surface-variant);
1010
+ text-transform: uppercase;
1011
+ letter-spacing: 0.05em;
1012
+ }
1013
+
1014
+ /* ── Skip Link ── */
1015
+ .radar .skip-link {
1016
+ position: absolute;
1017
+ top: -100%;
1018
+ left: 1rem;
1019
+ padding: 0.5rem 1rem;
1020
+ background: var(--accent);
1021
+ color: var(--surface);
1022
+ font-family: var(--font-mono);
1023
+ font-size: 0.75rem;
1024
+ border-radius: var(--radius-sm);
1025
+ z-index: 200;
1026
+ text-decoration: none;
1027
+ }
1028
+ .radar .skip-link:focus { top: 1rem; }
1029
+
1030
+ /* ── Responsive ── */
1031
+ @media (max-width: 768px) {
1032
+ .radar .portfolio-header { flex-direction: column; gap: 1rem; }
1033
+ .radar .portfolio-photo { width: 80px; height: 100px; }
1034
+ .radar .portfolio-stats { gap: 0.5rem; }
1035
+ .radar .portfolio-stat { min-width: 80px; padding: 0.5rem 0.75rem; }
1036
+ .radar .portfolio-projects { grid-template-columns: 1fr; }
1037
+ .radar .two-col { grid-template-columns: 1fr; }
1038
+ .radar .session-grid { grid-template-columns: 1fr; }
1039
+ .radar .stat-grid { grid-template-columns: repeat(2, 1fr); }
1040
+ .radar .session-layout { grid-template-columns: 1fr; }
1041
+ .radar .session-layout > aside { order: -1; }
1042
+ .radar .session-meta-row { gap: 1rem; }
1043
+ .radar .stat-grid-inline { grid-template-columns: repeat(2, 1fr); }
1044
+ .radar .agent-layout { grid-template-columns: 1fr; }
1045
+ }
1046
+
1047
+ @media (max-width: 480px) {
1048
+ .radar .agent-bar-row__label { width: 70px; }
1049
+ }