hypercore-cli 1.1.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 (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/dist/api-XGC7D5AW.js +162 -0
  4. package/dist/auth-DNQWYQKT.js +21 -0
  5. package/dist/background-2EGCAAQH.js +14 -0
  6. package/dist/backlog-Q2NZCLNY.js +24 -0
  7. package/dist/chunk-2CMSCWQW.js +162 -0
  8. package/dist/chunk-2LJ2DVEB.js +167 -0
  9. package/dist/chunk-3RPFCQKJ.js +288 -0
  10. package/dist/chunk-43OLRXM5.js +263 -0
  11. package/dist/chunk-4DVYJAJL.js +57 -0
  12. package/dist/chunk-6OL3GA3P.js +173 -0
  13. package/dist/chunk-AUHU7ALH.js +2023 -0
  14. package/dist/chunk-B6A2AKLN.js +139 -0
  15. package/dist/chunk-BE46C7JW.js +46 -0
  16. package/dist/chunk-CUVAUOXL.js +58 -0
  17. package/dist/chunk-GH7E2OJE.js +223 -0
  18. package/dist/chunk-GOOTEPBK.js +271 -0
  19. package/dist/chunk-GPPMJYSM.js +133 -0
  20. package/dist/chunk-GU2FZQ6A.js +69 -0
  21. package/dist/chunk-IOPKN5GD.js +190 -0
  22. package/dist/chunk-IXOIOGR5.js +1505 -0
  23. package/dist/chunk-KRPOPWGA.js +251 -0
  24. package/dist/chunk-MGLJ53QN.js +219 -0
  25. package/dist/chunk-MV4TTRYX.js +533 -0
  26. package/dist/chunk-OPZYEVYR.js +150 -0
  27. package/dist/chunk-QTSLP47C.js +166 -0
  28. package/dist/chunk-R3GPQC7I.js +393 -0
  29. package/dist/chunk-RKB2JOV2.js +43 -0
  30. package/dist/chunk-RNG3K465.js +80 -0
  31. package/dist/chunk-TGTYKBGC.js +86 -0
  32. package/dist/chunk-U5SGAIMM.js +681 -0
  33. package/dist/chunk-V5UHPPSY.js +140 -0
  34. package/dist/chunk-WHLVZCQY.js +245 -0
  35. package/dist/chunk-XDRCBMZZ.js +66 -0
  36. package/dist/chunk-XOS6HPEF.js +134 -0
  37. package/dist/chunk-ZSBHUGWR.js +262 -0
  38. package/dist/claude-NSQ442XD.js +12 -0
  39. package/dist/commands-CK3WFAGI.js +128 -0
  40. package/dist/commands-U63OEO5J.js +1044 -0
  41. package/dist/commands-ZE6GD3WC.js +232 -0
  42. package/dist/config-4EW42BSF.js +8 -0
  43. package/dist/config-loader-SXO674TF.js +24 -0
  44. package/dist/diagnose-AFW3ZTZ4.js +12 -0
  45. package/dist/display-IIUBEYWN.js +58 -0
  46. package/dist/extractor-QV53W2YJ.js +129 -0
  47. package/dist/history-WMSCHERZ.js +180 -0
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.js +406 -0
  50. package/dist/instance-registry-YSIJXSO7.js +15 -0
  51. package/dist/keybindings-JAAMLH3G.js +15 -0
  52. package/dist/loader-WHNTZTLP.js +58 -0
  53. package/dist/network-MM6YWPGO.js +279 -0
  54. package/dist/notify-HPTALZDC.js +14 -0
  55. package/dist/openai-compat-UQWJXBEK.js +12 -0
  56. package/dist/permissions-JUKXMNDH.js +10 -0
  57. package/dist/prompt-QV45TXRL.js +166 -0
  58. package/dist/quality-ST7PPNFR.js +16 -0
  59. package/dist/repl-RT3AHL7M.js +3375 -0
  60. package/dist/roadmap-5OBEKROY.js +17 -0
  61. package/dist/server-PORT7OEG.js +57 -0
  62. package/dist/session-4VUNDWLH.js +21 -0
  63. package/dist/skills-V4A35XKG.js +175 -0
  64. package/dist/store-Y4LU5QTO.js +25 -0
  65. package/dist/team-HO7Z4SIM.js +385 -0
  66. package/dist/telemetry-6R4EIE6O.js +30 -0
  67. package/dist/test-runner-ZQH5Y6OJ.js +619 -0
  68. package/dist/theme-3SYJ3UQA.js +14 -0
  69. package/dist/upgrade-7TGI3SXO.js +83 -0
  70. package/dist/verify-JUDKTPKZ.js +14 -0
  71. package/dist/web/static/app.js +562 -0
  72. package/dist/web/static/index.html +132 -0
  73. package/dist/web/static/mirror.css +1001 -0
  74. package/dist/web/static/mirror.html +184 -0
  75. package/dist/web/static/mirror.js +1125 -0
  76. package/dist/web/static/onboard.css +302 -0
  77. package/dist/web/static/onboard.html +140 -0
  78. package/dist/web/static/onboard.js +260 -0
  79. package/dist/web/static/style.css +602 -0
  80. package/dist/web/static/workspace.css +1568 -0
  81. package/dist/web/static/workspace.html +408 -0
  82. package/dist/web/static/workspace.js +1683 -0
  83. package/dist/web-Z5HSCQHW.js +39 -0
  84. package/package.json +67 -0
@@ -0,0 +1,602 @@
1
+ /* Hypercore Web Dashboard - Dark Theme */
2
+
3
+ :root {
4
+ --bg-primary: #0d1117;
5
+ --bg-secondary: #161b22;
6
+ --bg-tertiary: #21262d;
7
+ --bg-hover: #30363d;
8
+ --border: #30363d;
9
+ --border-light: #484f58;
10
+ --text-primary: #e6edf3;
11
+ --text-secondary: #8b949e;
12
+ --text-muted: #6e7681;
13
+ --accent: #58a6ff;
14
+ --accent-hover: #79c0ff;
15
+ --green: #3fb950;
16
+ --yellow: #d29922;
17
+ --red: #f85149;
18
+ --purple: #bc8cff;
19
+ --orange: #f0883e;
20
+ --font-mono: 'SF Mono', 'Cascadia Code', 'Fira Code', Consolas, monospace;
21
+ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
22
+ --radius: 8px;
23
+ --radius-sm: 4px;
24
+ }
25
+
26
+ * { margin: 0; padding: 0; box-sizing: border-box; }
27
+
28
+ body {
29
+ font-family: var(--font-sans);
30
+ background: var(--bg-primary);
31
+ color: var(--text-primary);
32
+ height: 100vh;
33
+ overflow: hidden;
34
+ display: flex;
35
+ flex-direction: column;
36
+ }
37
+
38
+ /* ─── Header ─── */
39
+ .header {
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: space-between;
43
+ padding: 0 16px;
44
+ height: 48px;
45
+ background: var(--bg-secondary);
46
+ border-bottom: 1px solid var(--border);
47
+ flex-shrink: 0;
48
+ }
49
+
50
+ .header-left { display: flex; align-items: center; gap: 8px; }
51
+ .logo { font-weight: 700; font-size: 16px; color: var(--accent); }
52
+
53
+ .header-right { display: flex; align-items: center; gap: 12px; }
54
+
55
+ .header-meta {
56
+ font-size: 11px;
57
+ color: var(--text-muted);
58
+ font-family: var(--font-mono);
59
+ }
60
+
61
+ .btn-icon {
62
+ background: none;
63
+ border: 1px solid var(--border);
64
+ color: var(--text-secondary);
65
+ width: 28px;
66
+ height: 28px;
67
+ border-radius: var(--radius-sm);
68
+ cursor: pointer;
69
+ font-size: 14px;
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ transition: all 0.15s;
74
+ }
75
+ .btn-icon:hover {
76
+ background: var(--bg-tertiary);
77
+ color: var(--text-primary);
78
+ border-color: var(--border-light);
79
+ }
80
+ .btn-icon.spinning {
81
+ animation: spin 0.6s ease-in-out;
82
+ }
83
+ @keyframes spin {
84
+ from { transform: rotate(0deg); }
85
+ to { transform: rotate(360deg); }
86
+ }
87
+
88
+ .status-dot {
89
+ width: 8px; height: 8px;
90
+ border-radius: 50%;
91
+ display: inline-block;
92
+ }
93
+ .status-dot.online { background: var(--green); }
94
+ .status-dot.offline { background: var(--red); }
95
+
96
+ /* ─── Main Layout ─── */
97
+ .main {
98
+ flex: 1;
99
+ display: grid;
100
+ grid-template-columns: 1fr;
101
+ overflow: hidden;
102
+ }
103
+
104
+ .panel-center {
105
+ display: flex;
106
+ flex-direction: column;
107
+ overflow: hidden;
108
+ background: var(--bg-primary);
109
+ }
110
+
111
+ .mono { font-family: var(--font-mono); font-size: 12px; }
112
+
113
+ /* Scrollbar */
114
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
115
+ ::-webkit-scrollbar-track { background: transparent; }
116
+ ::-webkit-scrollbar-thumb { background: var(--bg-hover); border-radius: 3px; }
117
+ ::-webkit-scrollbar-thumb:hover { background: var(--border-light); }
118
+
119
+ /* ─── Tab Navigation ─── */
120
+ .tab-nav {
121
+ display: flex;
122
+ gap: 2px;
123
+ margin-left: 16px;
124
+ }
125
+ .tab-btn {
126
+ background: none;
127
+ border: none;
128
+ color: var(--text-muted);
129
+ font-size: 13px;
130
+ padding: 6px 12px;
131
+ cursor: pointer;
132
+ border-radius: var(--radius-sm);
133
+ transition: all 0.15s;
134
+ font-family: var(--font-sans);
135
+ }
136
+ .tab-btn:hover { background: var(--bg-tertiary); color: var(--text-primary); }
137
+ .tab-btn.active { background: var(--bg-hover); color: var(--accent); font-weight: 600; }
138
+
139
+ /* Tab Content */
140
+ .tab-content { display: none; flex-direction: column; height: 100%; overflow: hidden; }
141
+ .tab-content.active { display: flex; }
142
+
143
+ /* ─── Skeleton Loading ─── */
144
+ .skeleton-line {
145
+ height: 14px;
146
+ background: linear-gradient(90deg, var(--bg-tertiary) 25%, var(--bg-hover) 50%, var(--bg-tertiary) 75%);
147
+ background-size: 200% 100%;
148
+ animation: shimmer 1.5s infinite;
149
+ border-radius: 3px;
150
+ margin-bottom: 10px;
151
+ }
152
+ .skeleton-line.short {
153
+ width: 60%;
154
+ }
155
+ @keyframes shimmer {
156
+ 0% { background-position: 200% 0; }
157
+ 100% { background-position: -200% 0; }
158
+ }
159
+
160
+ /* ─── Overview Tab ─── */
161
+ .overview-grid {
162
+ display: grid;
163
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
164
+ gap: 16px;
165
+ padding: 24px;
166
+ overflow-y: auto;
167
+ }
168
+
169
+ .overview-card {
170
+ background: var(--bg-secondary);
171
+ border: 1px solid var(--border);
172
+ border-radius: var(--radius);
173
+ overflow: hidden;
174
+ transition: border-color 0.15s;
175
+ }
176
+ .overview-card:hover { border-color: var(--border-light); }
177
+
178
+ .card-wide {
179
+ grid-column: 1 / -1;
180
+ }
181
+
182
+ .card-header {
183
+ padding: 12px 16px;
184
+ font-size: 13px;
185
+ font-weight: 600;
186
+ color: var(--text-secondary);
187
+ text-transform: uppercase;
188
+ letter-spacing: 0.5px;
189
+ border-bottom: 1px solid var(--border);
190
+ }
191
+
192
+ .card-body {
193
+ padding: 16px;
194
+ font-size: 13px;
195
+ line-height: 1.8;
196
+ }
197
+
198
+ .card-stat {
199
+ display: flex;
200
+ justify-content: space-between;
201
+ padding: 2px 0;
202
+ color: var(--text-secondary);
203
+ }
204
+ .card-stat span:last-child { color: var(--text-primary); font-family: var(--font-mono); }
205
+
206
+ .card-value-big {
207
+ font-size: 28px;
208
+ font-weight: 700;
209
+ color: var(--text-primary);
210
+ font-family: var(--font-mono);
211
+ }
212
+
213
+ .card-value-label {
214
+ font-size: 12px;
215
+ color: var(--text-muted);
216
+ margin-top: 4px;
217
+ }
218
+
219
+ .card-tag {
220
+ display: inline-block;
221
+ background: var(--bg-tertiary);
222
+ padding: 2px 8px;
223
+ border-radius: 10px;
224
+ font-size: 11px;
225
+ font-family: var(--font-mono);
226
+ color: var(--text-secondary);
227
+ margin: 2px;
228
+ }
229
+
230
+ .git-branch { color: var(--green); font-weight: 600; }
231
+ .git-clean { color: var(--green); }
232
+ .git-dirty { color: var(--yellow); }
233
+
234
+ /* ─── Empty State ─── */
235
+ .empty-state {
236
+ display: flex;
237
+ flex-direction: column;
238
+ align-items: center;
239
+ justify-content: center;
240
+ padding: 24px 16px;
241
+ text-align: center;
242
+ }
243
+ .empty-icon {
244
+ font-size: 32px;
245
+ margin-bottom: 12px;
246
+ opacity: 0.5;
247
+ }
248
+ .empty-text {
249
+ font-size: 14px;
250
+ font-weight: 600;
251
+ color: var(--text-secondary);
252
+ margin-bottom: 6px;
253
+ }
254
+ .empty-hint {
255
+ font-size: 12px;
256
+ color: var(--text-muted);
257
+ }
258
+ .empty-hint code {
259
+ background: var(--bg-tertiary);
260
+ padding: 1px 6px;
261
+ border-radius: 3px;
262
+ font-family: var(--font-mono);
263
+ font-size: 11px;
264
+ color: var(--accent);
265
+ }
266
+
267
+ /* ─── Instance List (Sessions Card) ─── */
268
+ .instance-count {
269
+ font-size: 13px;
270
+ font-weight: 600;
271
+ color: var(--text-secondary);
272
+ margin-bottom: 10px;
273
+ }
274
+
275
+ .instances-list {
276
+ display: flex;
277
+ flex-direction: column;
278
+ gap: 6px;
279
+ }
280
+
281
+ .instance-row {
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: space-between;
285
+ padding: 8px 10px;
286
+ border-radius: var(--radius-sm);
287
+ background: var(--bg-tertiary);
288
+ transition: background 0.15s;
289
+ }
290
+ .instance-row:hover {
291
+ background: var(--bg-hover);
292
+ }
293
+ .instance-row.current {
294
+ border-left: 2px solid var(--accent);
295
+ background: rgba(88, 166, 255, 0.06);
296
+ }
297
+
298
+ .instance-row-left {
299
+ display: flex;
300
+ align-items: center;
301
+ gap: 8px;
302
+ flex: 1;
303
+ min-width: 0;
304
+ }
305
+
306
+ .instance-row-right {
307
+ display: flex;
308
+ align-items: center;
309
+ gap: 12px;
310
+ flex-shrink: 0;
311
+ margin-left: 12px;
312
+ }
313
+
314
+ .instance-dot {
315
+ width: 6px; height: 6px;
316
+ border-radius: 50%;
317
+ background: var(--green);
318
+ flex-shrink: 0;
319
+ }
320
+ .instance-dot.current {
321
+ background: var(--accent);
322
+ box-shadow: 0 0 4px var(--accent);
323
+ }
324
+
325
+ .instance-info {
326
+ display: flex;
327
+ flex-direction: column;
328
+ min-width: 0;
329
+ }
330
+
331
+ .instance-name {
332
+ font-size: 13px;
333
+ font-weight: 600;
334
+ color: var(--text-primary);
335
+ overflow: hidden;
336
+ text-overflow: ellipsis;
337
+ white-space: nowrap;
338
+ }
339
+
340
+ .instance-meta {
341
+ font-size: 11px;
342
+ color: var(--text-muted);
343
+ margin-top: 1px;
344
+ overflow: hidden;
345
+ text-overflow: ellipsis;
346
+ white-space: nowrap;
347
+ }
348
+
349
+ .instance-port {
350
+ color: var(--text-muted);
351
+ font-family: var(--font-mono);
352
+ font-size: 11px;
353
+ }
354
+
355
+ .instance-uptime {
356
+ color: var(--text-muted);
357
+ font-family: var(--font-mono);
358
+ font-size: 11px;
359
+ min-width: 40px;
360
+ text-align: right;
361
+ }
362
+
363
+ .badge-current {
364
+ display: inline-block;
365
+ background: rgba(88, 166, 255, 0.15);
366
+ color: var(--accent);
367
+ font-size: 10px;
368
+ font-weight: 600;
369
+ padding: 1px 6px;
370
+ border-radius: 8px;
371
+ margin-left: 6px;
372
+ vertical-align: middle;
373
+ text-transform: uppercase;
374
+ letter-spacing: 0.3px;
375
+ }
376
+
377
+ /* ─── Lines Tab (Split Layout) ─── */
378
+ .tab-split {
379
+ display: grid;
380
+ grid-template-columns: 300px 1fr;
381
+ height: 100%;
382
+ overflow: hidden;
383
+ }
384
+
385
+ .lines-list-panel {
386
+ border-right: 1px solid var(--border);
387
+ display: flex;
388
+ flex-direction: column;
389
+ overflow: hidden;
390
+ }
391
+
392
+ .tab-panel-header {
393
+ padding: 12px 16px;
394
+ border-bottom: 1px solid var(--border);
395
+ }
396
+ .tab-panel-header h3 {
397
+ font-size: 14px;
398
+ font-weight: 600;
399
+ color: var(--text-primary);
400
+ margin: 0;
401
+ }
402
+
403
+ .lines-list {
404
+ flex: 1;
405
+ overflow-y: auto;
406
+ padding: 8px;
407
+ }
408
+
409
+ .line-item {
410
+ padding: 12px;
411
+ border-radius: var(--radius-sm);
412
+ cursor: pointer;
413
+ transition: background 0.15s;
414
+ margin-bottom: 4px;
415
+ }
416
+ .line-item:hover { background: var(--bg-tertiary); }
417
+ .line-item.active { background: var(--bg-hover); border-left: 2px solid var(--accent); }
418
+ .line-item-name { font-size: 14px; font-weight: 600; color: var(--text-primary); }
419
+ .line-item-desc { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
420
+
421
+ .run-panel {
422
+ display: flex;
423
+ flex-direction: column;
424
+ overflow: hidden;
425
+ }
426
+
427
+ .run-content {
428
+ flex: 1;
429
+ overflow-y: auto;
430
+ padding: 16px;
431
+ }
432
+
433
+ /* Run form */
434
+ .run-form { display: flex; flex-direction: column; gap: 12px; }
435
+ .run-field label {
436
+ display: block;
437
+ font-size: 12px;
438
+ font-weight: 600;
439
+ color: var(--text-secondary);
440
+ margin-bottom: 4px;
441
+ }
442
+ .run-field input {
443
+ width: 100%;
444
+ background: var(--bg-tertiary);
445
+ border: 1px solid var(--border);
446
+ border-radius: var(--radius-sm);
447
+ padding: 8px 12px;
448
+ color: var(--text-primary);
449
+ font-size: 14px;
450
+ font-family: var(--font-sans);
451
+ outline: none;
452
+ box-sizing: border-box;
453
+ }
454
+ .run-field input:focus { border-color: var(--accent); }
455
+ .run-field input::placeholder { color: var(--text-muted); }
456
+ .run-field .field-hint { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
457
+
458
+ .btn-primary {
459
+ background: var(--accent);
460
+ color: #fff;
461
+ border: none;
462
+ border-radius: var(--radius);
463
+ padding: 10px 20px;
464
+ font-size: 14px;
465
+ font-weight: 600;
466
+ cursor: pointer;
467
+ transition: background 0.15s;
468
+ align-self: flex-start;
469
+ margin-top: 8px;
470
+ }
471
+ .btn-primary:hover { background: var(--accent-hover); }
472
+ .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
473
+
474
+ /* Run output stream */
475
+ .run-output-stream {
476
+ margin-top: 16px;
477
+ padding: 12px;
478
+ background: var(--bg-primary);
479
+ border: 1px solid var(--border);
480
+ border-radius: var(--radius);
481
+ max-height: 60vh;
482
+ overflow-y: auto;
483
+ font-size: 13px;
484
+ line-height: 1.6;
485
+ }
486
+ .run-event { margin-bottom: 6px; }
487
+ .run-event-station { color: var(--accent); font-weight: 600; }
488
+ .run-event-text { color: var(--text-secondary); }
489
+ .run-event-tool { color: var(--orange); font-family: var(--font-mono); font-size: 12px; }
490
+ .run-event-complete { color: var(--green); font-weight: 600; }
491
+ .run-event-error { color: var(--red); }
492
+
493
+ .text-muted { color: var(--text-muted); font-size: 13px; }
494
+
495
+ /* ─── History Tab ─── */
496
+ .history-item {
497
+ padding: 10px 12px;
498
+ border-radius: var(--radius-sm);
499
+ cursor: pointer;
500
+ transition: background 0.15s;
501
+ margin-bottom: 4px;
502
+ }
503
+ .history-item:hover { background: var(--bg-tertiary); }
504
+ .history-item.active { background: var(--bg-hover); border-left: 2px solid var(--accent); }
505
+ .history-item-line { font-size: 13px; font-weight: 600; color: var(--text-primary); }
506
+ .history-item-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
507
+
508
+ .detail-meta { margin-bottom: 16px; }
509
+ .detail-meta-row { display: flex; justify-content: space-between; padding: 4px 0; font-size: 13px; color: var(--text-secondary); }
510
+ .detail-meta-row span:last-child { color: var(--text-primary); font-family: var(--font-mono); }
511
+ .detail-station { margin-bottom: 12px; padding: 12px; background: var(--bg-tertiary); border-radius: var(--radius); }
512
+ .detail-station-header { font-size: 13px; font-weight: 600; color: var(--accent); margin-bottom: 8px; }
513
+ .detail-station-output { font-size: 12px; color: var(--text-secondary); white-space: pre-wrap; max-height: 200px; overflow-y: auto; }
514
+
515
+ /* ─── Settings Tab ─── */
516
+ .settings-container {
517
+ padding: 24px;
518
+ overflow-y: auto;
519
+ flex: 1;
520
+ display: flex;
521
+ flex-direction: column;
522
+ gap: 24px;
523
+ }
524
+
525
+ .settings-section {
526
+ background: var(--bg-secondary);
527
+ border: 1px solid var(--border);
528
+ border-radius: var(--radius);
529
+ overflow: hidden;
530
+ }
531
+ .settings-section h3 {
532
+ padding: 12px 16px;
533
+ font-size: 14px;
534
+ font-weight: 600;
535
+ color: var(--text-primary);
536
+ border-bottom: 1px solid var(--border);
537
+ margin: 0;
538
+ }
539
+
540
+ .settings-body {
541
+ padding: 16px;
542
+ font-size: 13px;
543
+ }
544
+
545
+ .settings-tools-count {
546
+ font-size: 12px;
547
+ color: var(--text-muted);
548
+ margin-bottom: 8px;
549
+ }
550
+
551
+ .settings-tools-grid {
552
+ display: flex;
553
+ flex-wrap: wrap;
554
+ gap: 6px;
555
+ }
556
+
557
+ .tool-tag {
558
+ background: var(--bg-tertiary);
559
+ padding: 4px 10px;
560
+ border-radius: 10px;
561
+ font-size: 11px;
562
+ font-family: var(--font-mono);
563
+ color: var(--text-secondary);
564
+ }
565
+
566
+ .hooks-list { font-family: var(--font-mono); font-size: 12px; line-height: 2; }
567
+ .hook-event { color: var(--purple); }
568
+ .hook-count { color: var(--text-muted); }
569
+
570
+ /* ─── Code Blocks ─── */
571
+ pre {
572
+ background: var(--bg-tertiary);
573
+ border: 1px solid var(--border);
574
+ border-radius: var(--radius-sm);
575
+ padding: 12px;
576
+ overflow-x: auto;
577
+ margin: 8px 0;
578
+ font-family: var(--font-mono);
579
+ font-size: 13px;
580
+ line-height: 1.5;
581
+ }
582
+ code {
583
+ font-family: var(--font-mono);
584
+ font-size: 0.9em;
585
+ background: var(--bg-tertiary);
586
+ padding: 2px 6px;
587
+ border-radius: 3px;
588
+ }
589
+ pre code { background: none; padding: 0; }
590
+
591
+ /* ─── Responsive ─── */
592
+ @media (max-width: 1024px) {
593
+ .tab-split { grid-template-columns: 240px 1fr; }
594
+ .overview-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
595
+ .card-wide { grid-column: 1 / -1; }
596
+ }
597
+ @media (max-width: 768px) {
598
+ .tab-split { grid-template-columns: 1fr; }
599
+ .lines-list-panel { display: none; }
600
+ .overview-grid { grid-template-columns: 1fr; padding: 16px; }
601
+ .card-wide { grid-column: auto; }
602
+ }