agentgui 1.0.930 → 1.0.932

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/AGENTS.md +35 -12
  2. package/database.js +31 -2
  3. package/lib/http-handler.js +11 -25
  4. package/lib/routes-registry.js +4 -48
  5. package/lib/server-startup.js +3 -11
  6. package/lib/ws-setup.js +2 -1
  7. package/package.json +3 -3
  8. package/server.js +7 -1
  9. package/site/app/js/app.js +64 -68
  10. package/site/app/js/backend.js +1 -1
  11. package/static/lib/xstate.umd.min.js +1 -1
  12. package/lib/db-queries-chunks.js +0 -195
  13. package/lib/db-queries-chunks2.js +0 -82
  14. package/lib/db-queries-cleanup.js +0 -74
  15. package/lib/db-queries-del.js +0 -141
  16. package/lib/db-queries-events.js +0 -68
  17. package/lib/db-queries-import.js +0 -133
  18. package/lib/db-queries-messages.js +0 -102
  19. package/lib/db-queries-sessions.js +0 -112
  20. package/lib/db-queries-streams.js +0 -100
  21. package/lib/db-queries.js +0 -89
  22. package/lib/jsonl-parser.js +0 -190
  23. package/lib/jsonl-watcher.js +0 -64
  24. package/lib/routes-agent-actions.js +0 -61
  25. package/lib/routes-auth-config.js +0 -30
  26. package/lib/routes-conversations.js +0 -96
  27. package/lib/routes-debug.js +0 -119
  28. package/lib/routes-messages.js +0 -139
  29. package/lib/routes-runs.js +0 -156
  30. package/lib/routes-scripts.js +0 -135
  31. package/lib/routes-sessions.js +0 -144
  32. package/lib/routes-threads.js +0 -100
  33. package/lib/routes-util.js +0 -110
  34. package/lib/ws-handlers-conv.js +0 -138
  35. package/lib/ws-handlers-conv2.js +0 -169
  36. package/lib/ws-handlers-msg.js +0 -121
  37. package/lib/ws-handlers-queue.js +0 -56
  38. package/lib/ws-handlers-run.js +0 -182
  39. package/lib/ws-handlers-scripts.js +0 -66
  40. package/lib/ws-handlers-session.js +0 -105
  41. package/lib/ws-handlers-session2.js +0 -85
  42. package/lib/ws-legacy-handlers.js +0 -51
  43. package/static/app.js +0 -261
  44. package/static/css/app-shell.css +0 -419
  45. package/static/css/brand-bible.css +0 -591
  46. package/static/css/colors_and_type.css +0 -568
  47. package/static/css/gmail-skin.css +0 -663
  48. package/static/css/main.css +0 -4015
  49. package/static/css/tools-popup.css +0 -472
  50. package/static/index.html +0 -418
  51. package/static/js/agent-auth.js +0 -146
  52. package/static/js/app-shortcuts.js +0 -30
  53. package/static/js/audio-recorder-processor.js +0 -18
  54. package/static/js/client-agents.js +0 -155
  55. package/static/js/client-cache.js +0 -171
  56. package/static/js/client-conv.js +0 -198
  57. package/static/js/client-events.js +0 -164
  58. package/static/js/client-exec.js +0 -160
  59. package/static/js/client-helpers.js +0 -199
  60. package/static/js/client-load.js +0 -175
  61. package/static/js/client-render.js +0 -132
  62. package/static/js/client-scroll.js +0 -178
  63. package/static/js/client-status.js +0 -167
  64. package/static/js/client-streaming.js +0 -117
  65. package/static/js/client-streaming2.js +0 -116
  66. package/static/js/client-streaming3.js +0 -153
  67. package/static/js/client-streaming4.js +0 -194
  68. package/static/js/client-ui-controls.js +0 -170
  69. package/static/js/client-ui.js +0 -128
  70. package/static/js/client-ui2.js +0 -160
  71. package/static/js/client-url.js +0 -93
  72. package/static/js/client-utils.js +0 -174
  73. package/static/js/client-ws-msg.js +0 -88
  74. package/static/js/client-ws.js +0 -161
  75. package/static/js/client.js +0 -145
  76. package/static/js/codec.js +0 -4
  77. package/static/js/conv-list-machine.js +0 -145
  78. package/static/js/conv-list-renderer.js +0 -198
  79. package/static/js/conv-machine.js +0 -110
  80. package/static/js/conv-sidebar-actions.js +0 -188
  81. package/static/js/conv-sidebar-clone.js +0 -91
  82. package/static/js/conversations.js +0 -116
  83. package/static/js/dialogs-types.js +0 -111
  84. package/static/js/dialogs.js +0 -53
  85. package/static/js/event-filter-config.js +0 -36
  86. package/static/js/event-processor.js +0 -181
  87. package/static/js/features.js +0 -187
  88. package/static/js/image-loader-element.js +0 -76
  89. package/static/js/image-loader.js +0 -146
  90. package/static/js/prompt-machine.js +0 -108
  91. package/static/js/recording-machine.js +0 -49
  92. package/static/js/script-runner.js +0 -192
  93. package/static/js/state-barrier.js +0 -105
  94. package/static/js/streaming-renderer-dispatch.js +0 -144
  95. package/static/js/streaming-renderer-events.js +0 -163
  96. package/static/js/streaming-renderer-events2.js +0 -125
  97. package/static/js/streaming-renderer-params.js +0 -38
  98. package/static/js/streaming-renderer-render-misc.js +0 -107
  99. package/static/js/streaming-renderer-render.js +0 -181
  100. package/static/js/streaming-renderer-render2.js +0 -149
  101. package/static/js/streaming-renderer-render3.js +0 -142
  102. package/static/js/streaming-renderer-static.js +0 -181
  103. package/static/js/streaming-renderer-static2.js +0 -140
  104. package/static/js/streaming-renderer-stream.js +0 -170
  105. package/static/js/streaming-renderer-text.js +0 -185
  106. package/static/js/streaming-renderer-tools.js +0 -189
  107. package/static/js/streaming-renderer-tools2.js +0 -92
  108. package/static/js/streaming-renderer.js +0 -200
  109. package/static/js/syntax-highlighter-render.js +0 -72
  110. package/static/js/syntax-highlighter.js +0 -131
  111. package/static/js/terminal-machine.js +0 -51
  112. package/static/js/terminal.js +0 -178
  113. package/static/js/ui-components-rendering.js +0 -62
  114. package/static/js/ui-components.js +0 -88
  115. package/static/js/websocket-manager.js +0 -107
  116. package/static/js/ws-client.js +0 -87
  117. package/static/js/ws-core.js +0 -162
  118. package/static/js/ws-latency.js +0 -88
  119. package/static/js/ws-machine.js +0 -68
  120. package/static/lib/msgpackr.min.js +0 -2
  121. package/static/theme.js +0 -74
  122. package/static/vendor/highlight-js.css +0 -10
  123. package/static/vendor/highlight.min.js +0 -1244
  124. package/static/vendor/prism-dark.css +0 -129
  125. package/static/vendor/rippleui.css +0 -35
  126. package/static/vendor/xterm-addon-fit.min.js +0 -8
  127. package/static/vendor/xterm.css +0 -8
  128. package/static/vendor/xterm.min.js +0 -8
@@ -1,591 +0,0 @@
1
- :root {
2
- /* Brand palette — mirrors design/colors_and_type.css exactly */
3
- --paper: #EFE9DD;
4
- --ink: #0B0B09;
5
- --acid: #B8FF00;
6
- --link: #1F4DFF;
7
- --warn: #FF3B1F;
8
- --live: #00A86B;
9
-
10
- --green: #247420;
11
- --green-2: #92CEAC;
12
- --green-deep: #1c5a19;
13
- --green-fg: #FFFFFF;
14
- --purple: #420247;
15
- --purple-fg: #FFFFFF;
16
- --mascot: #E84B8A;
17
- --mascot-fg: #FFFFFF;
18
- --sun: #FFD100;
19
- --flame: #FF5C1A;
20
- --sky: #3B82F6;
21
-
22
- /* Panel surface tokens — light */
23
- --panel-0: var(--paper);
24
- --panel-1: #f6f1e7;
25
- --panel-2: #ece5d8;
26
- --panel-3: #ddd4c3;
27
- --panel-hover: #e6dece;
28
- --panel-select: #d8eed6;
29
- --panel-text: var(--ink);
30
- --panel-text-2: #4a473f;
31
- --panel-text-3: #6d675b;
32
- --panel-accent: var(--green);
33
- --panel-accent-2: var(--green-deep);
34
- --panel-accent-fg: #ffffff;
35
- --panel-shadow: none;
36
- --panel-shadow-top: none;
37
-
38
- /* Semantic color aliases */
39
- --color-primary: var(--green);
40
- --color-primary-dark: var(--green-deep);
41
- --color-bg-primary: var(--panel-0);
42
- --color-bg-secondary: var(--panel-1);
43
- --color-bg-raised: var(--panel-1);
44
- --color-bg-hover: var(--panel-hover);
45
- --color-bg-code: #f3eddf;
46
- --color-code-text: var(--ink);
47
- --color-code-border: var(--ink);
48
- --color-thinking-bg: #efe7d5;
49
- --color-text-primary: var(--panel-text);
50
- --color-text-secondary: var(--panel-text-2);
51
- --color-text-muted: var(--panel-text-3);
52
- --color-border: var(--ink);
53
- --color-success: var(--green);
54
- --color-error: var(--warn);
55
- --color-warning: #b36f00;
56
- --color-info: var(--link);
57
- --color-focus-ring: rgba(36, 116, 32, 0.2);
58
-
59
- /* Mono color tokens */
60
- --mono-1: var(--green);
61
- --mono-2: var(--purple);
62
- --mono-3: var(--mascot);
63
- --mono-4: var(--sun);
64
- --mono-5: var(--warn);
65
- --mono-6: var(--sky);
66
-
67
- /* Foreground tokens */
68
- --fg: var(--ink);
69
- --fg-3: var(--panel-text-3);
70
- --bg: var(--paper);
71
- --bg-2: var(--panel-2);
72
-
73
- /* Typography */
74
- --ff-display: "Archivo Black", "Arial Black", "Times New Roman", serif;
75
- --ff-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
76
- --ff-body: "Instrument Serif", Georgia, serif;
77
- --ff-prose: "Instrument Serif", Georgia, serif;
78
-
79
- /* Font sizes */
80
- --fs-micro: 9px;
81
- --fs-xs: 11px;
82
- --fs-tiny: 11px;
83
- --fs-sm: 12px;
84
- --fs-body: 13px;
85
- --fs-lg: 14px;
86
- --fs-h3: 14px;
87
- --fs-h4: 13px;
88
- --fs-h2: 28px;
89
- --fs-h1: 48px;
90
- --fs-hero: 96px;
91
-
92
- /* Line heights */
93
- --lh-tight: 1.05;
94
- --lh-snug: 1.2;
95
- --lh-base: 1.5;
96
- --lh-long: 1.6;
97
-
98
- /* Letter spacing */
99
- --tr-tight: -0.02em;
100
- --tr-label: 0.08em;
101
- --tr-caps: 0.05em;
102
-
103
- /* Spacing scale (4px base) */
104
- --space-1: 4px;
105
- --space-2: 8px;
106
- --space-3: 12px;
107
- --space-4: 16px;
108
- --space-5: 24px;
109
- --space-6: 32px;
110
- --space-7: 48px;
111
- --space-8: 64px;
112
-
113
- /* Border radius — flat by default */
114
- --r-1: 0;
115
- --r-2: 0;
116
- --r-3: 0;
117
- --r-pill: 9999px;
118
- --radius-sm: 0;
119
- --radius-md: 0;
120
- --radius-lg: 0;
121
- --radius-xl: 0;
122
-
123
- /* Border widths */
124
- --bw-hair: 1px;
125
- --bw-rule: 2px;
126
-
127
- /* Measure */
128
- --measure: 72ch;
129
-
130
- /* Motion */
131
- --dur-snap: 80ms;
132
- --dur-base: 160ms;
133
- --ease: cubic-bezier(0.2, 0, 0, 1);
134
-
135
- /* Surface overlays */
136
- --surface-2: rgba(0,0,0,0.04);
137
- --surface-ink-2: rgba(255,255,255,0.06);
138
-
139
- --shadow-sm: none;
140
- --shadow-md: none;
141
- --shadow-lg: none;
142
- }
143
-
144
- html.dark,
145
- [data-theme="dark"] {
146
- --panel-0: #0B0B09;
147
- --panel-1: #141411;
148
- --panel-2: #1f1f1a;
149
- --panel-3: #2a2a23;
150
- --panel-hover: #24241f;
151
- --panel-select: #1f3520;
152
- --panel-text: #EFE9DD;
153
- --panel-text-2: #d2cab9;
154
- --panel-text-3: #afa797;
155
- --panel-accent: var(--green-2);
156
- --panel-accent-2: var(--green-2);
157
- --panel-accent-fg: var(--ink);
158
- --panel-shadow: none;
159
-
160
- --mono-1: var(--green-2);
161
- --mono-2: #c084fc;
162
- --mono-3: var(--mascot);
163
- --mono-4: var(--sun);
164
- --mono-5: var(--warn);
165
- --mono-6: var(--sky);
166
-
167
- --fg: var(--panel-text);
168
- --fg-3: var(--panel-text-3);
169
- --bg: var(--panel-0);
170
- --bg-2: var(--panel-2);
171
-
172
- --color-primary: var(--green-2);
173
- --color-primary-dark: #7ebe9a;
174
- --color-bg-primary: var(--panel-0);
175
- --color-bg-secondary: var(--panel-1);
176
- --color-bg-raised: var(--panel-1);
177
- --color-bg-hover: var(--panel-hover);
178
- --color-bg-code: #1d1d18;
179
- --color-code-text: var(--panel-text);
180
- --color-code-border: var(--panel-text);
181
- --color-thinking-bg: #1a1f18;
182
- --color-text-primary: var(--panel-text);
183
- --color-text-secondary: var(--panel-text-2);
184
- --color-text-muted: var(--panel-text-3);
185
- --color-border: var(--panel-text);
186
- --color-focus-ring: rgba(146, 206, 172, 0.25);
187
- }
188
-
189
- html,
190
- body {
191
- background: var(--color-bg-primary);
192
- color: var(--color-text-primary);
193
- font-family: var(--ff-mono);
194
- letter-spacing: 0;
195
- }
196
-
197
- * {
198
- border-radius: 0 !important;
199
- box-shadow: none !important;
200
- }
201
-
202
- .sidebar,
203
- .main-header,
204
- .view-toggle-bar,
205
- .input-section,
206
- .sidebar-search-bar,
207
- .clone-input-bar,
208
- .bulk-action-bar,
209
- .pm2-monitor-panel,
210
- .tools-popup-content,
211
- .folder-modal,
212
- .status-badge,
213
- .input-card,
214
- .cli,
215
- .panel,
216
- .kv {
217
- border: 1px solid var(--color-border) !important;
218
- }
219
-
220
- .sidebar {
221
- background: var(--panel-1);
222
- }
223
-
224
- .sidebar-header h2,
225
- .header-title {
226
- font-family: var(--ff-display);
227
- text-transform: lowercase;
228
- letter-spacing: -0.02em;
229
- }
230
-
231
- .sidebar-header h2,
232
- .header-title {
233
- font-size: 1rem;
234
- }
235
-
236
- .main-header,
237
- .view-toggle-bar,
238
- .sidebar-search-bar,
239
- .input-section {
240
- background: var(--panel-0);
241
- }
242
-
243
- .sidebar-new-btn,
244
- .clone-go-btn,
245
- .input-send-btn,
246
- .btn-primary,
247
- .view-toggle-btn.active,
248
- .status-indicator[data-status="connected"],
249
- .streaming-block-system,
250
- .message-tool,
251
- .conversation-item.active {
252
- background: var(--panel-accent) !important;
253
- color: var(--panel-accent-fg) !important;
254
- }
255
-
256
- .sidebar-overflow-btn,
257
- .sidebar-toggle-btn,
258
- .theme-toggle-btn,
259
- .header-icon-btn,
260
- .input-icon-btn,
261
- .view-toggle-btn,
262
- .btn,
263
- .btn-ghost,
264
- .status-cancel-btn,
265
- .clone-cancel-btn,
266
- .tools-popup-refresh-btn {
267
- background: transparent;
268
- color: var(--color-text-secondary);
269
- border: 1px solid var(--color-border) !important;
270
- }
271
-
272
- .sidebar-overflow-btn:hover,
273
- .sidebar-toggle-btn:hover,
274
- .theme-toggle-btn:hover,
275
- .header-icon-btn:hover,
276
- .input-icon-btn:hover,
277
- .view-toggle-btn:hover,
278
- .btn:hover,
279
- .btn-ghost:hover,
280
- .status-cancel-btn:hover,
281
- .clone-cancel-btn:hover,
282
- .tools-popup-refresh-btn:hover {
283
- background: var(--panel-hover) !important;
284
- color: var(--color-text-primary) !important;
285
- }
286
-
287
- .welcome-logo {
288
- background: var(--purple);
289
- color: #fff;
290
- border: 1px solid var(--color-border);
291
- font-family: var(--ff-display);
292
- }
293
-
294
- .welcome-subtitle {
295
- font-family: var(--ff-mono);
296
- text-transform: lowercase;
297
- color: var(--color-text-secondary);
298
- }
299
-
300
- .message {
301
- border: 1px solid var(--color-border);
302
- background: var(--panel-1);
303
- }
304
-
305
- .message-user {
306
- background: #dcefd9;
307
- }
308
-
309
- html.dark .message-user {
310
- background: #1f3520;
311
- }
312
-
313
- .message-role,
314
- .conversation-item-meta,
315
- .status-badge,
316
- .sidebar-empty,
317
- .sidebar-search-input,
318
- .input-chip-select,
319
- .input-card-textarea,
320
- .sidebar-list,
321
- .streaming-status-bar,
322
- .kv td:first-child {
323
- font-family: var(--ff-mono);
324
- }
325
-
326
- .message-content,
327
- .message-text,
328
- .welcome-subtitle,
329
- .main-panel p {
330
- font-family: var(--ff-body);
331
- font-size: 0.98rem;
332
- }
333
-
334
- a,
335
- .prose a,
336
- .message-content a {
337
- color: var(--link);
338
- text-decoration: underline;
339
- text-underline-offset: 2px;
340
- }
341
-
342
- a:hover,
343
- .prose a:hover,
344
- .message-content a:hover {
345
- color: var(--panel-accent);
346
- }
347
-
348
- .input-card,
349
- .sidebar-search-input,
350
- .clone-input,
351
- .input-chip-select,
352
- .input-card-textarea,
353
- .tools-popup-content,
354
- .folder-modal,
355
- .message-code,
356
- pre,
357
- code {
358
- background: var(--color-bg-secondary) !important;
359
- color: var(--color-text-primary);
360
- }
361
-
362
- .message-code,
363
- pre,
364
- code {
365
- border: 1px solid var(--color-border);
366
- }
367
-
368
- .status-badge,
369
- .app-shell,
370
- .main-panel,
371
- #output-scroll,
372
- .messages-wrapper,
373
- .sidebar-list,
374
- .conversation-item,
375
- .streaming-status-bar,
376
- .input-card-toolbar,
377
- .card,
378
- .panel-body {
379
- border-color: var(--color-border) !important;
380
- }
381
-
382
- .streaming-status-bar {
383
- background: var(--panel-1);
384
- }
385
-
386
- .status-agent-name {
387
- color: var(--panel-accent);
388
- font-weight: 700;
389
- }
390
-
391
- .tools-popup,
392
- .folder-modal-overlay {
393
- background: rgba(11, 11, 9, 0.5) !important;
394
- }
395
-
396
- .drop-zone-overlay {
397
- background: rgba(36, 116, 32, 0.12);
398
- border: 1px dashed var(--color-border);
399
- }
400
-
401
- ::-webkit-scrollbar-thumb {
402
- background: var(--panel-3);
403
- }
404
-
405
- @media (max-width: 768px) {
406
- .sidebar {
407
- border-right: 1px solid var(--color-border) !important;
408
- }
409
- }
410
-
411
- /* Selection — mascot brand color */
412
- ::selection { background: var(--mascot); color: var(--mascot-fg); }
413
-
414
- /* Mono color utilities — colorful mono, the 247420 signature */
415
- .mono-green { color: var(--mono-1); }
416
- .mono-purple { color: var(--mono-2); }
417
- .mono-mascot { color: var(--mono-3); }
418
- .mono-sun { color: var(--mono-4); }
419
- .mono-flame { color: var(--mono-5); }
420
- .mono-sky { color: var(--mono-6); }
421
- .mono-ink { color: var(--fg); }
422
- .mono-dim { color: var(--fg-3); }
423
-
424
- /* Highlight blocks — mono run on tinted bg */
425
- .hl-green { background: var(--green); color: var(--green-fg); padding: 0.08em 0.4em; }
426
- .hl-purple { background: var(--purple); color: var(--purple-fg); padding: 0.08em 0.4em; }
427
- .hl-mascot { background: var(--mascot); color: var(--mascot-fg); padding: 0.08em 0.4em; }
428
- .hl-sun { background: var(--sun); color: var(--ink); padding: 0.08em 0.4em; }
429
-
430
- /* Syntax role classes */
431
- .m-k { color: var(--mono-2); font-weight: 500; }
432
- .m-s { color: var(--mono-4); }
433
- .m-n { color: var(--mono-1); }
434
- .m-c { color: var(--fg-3); font-style: italic; }
435
- .m-tag{ color: var(--mono-3); }
436
- .m-op { color: var(--mono-5); }
437
- .m-ref{ color: var(--mono-6); text-decoration: underline; text-underline-offset: 3px; }
438
-
439
- /* Row hover — translate + shadow like design system */
440
- .conversation-item:hover {
441
- transform: translateX(-1px);
442
- }
443
-
444
- /* Focus ring — green glow */
445
- :focus-visible {
446
- outline: 2px solid var(--panel-accent) !important;
447
- outline-offset: 2px;
448
- }
449
-
450
- /* Chip selects — use panel-3 so they contrast against the panel-1 card bg */
451
- .input-chip-select {
452
- background: var(--panel-3) !important;
453
- border: 1px solid var(--color-border) !important;
454
- color: var(--color-text-primary) !important;
455
- border-radius: var(--r-pill) !important;
456
- }
457
- .input-chip-select:hover {
458
- border-color: var(--panel-accent) !important;
459
- background: var(--panel-select) !important;
460
- }
461
-
462
- /* Viewport-safe dropdown menu — max-height prevents off-screen overflow; JS flips top/bottom */
463
- .sidebar-overflow-menu {
464
- max-height: calc(100dvh - 80px);
465
- overflow-y: auto;
466
- }
467
-
468
- /* ============================================================
469
- Brand line — 247420 / project / leaf
470
- ============================================================ */
471
- .brand-line {
472
- font-family: var(--ff-mono) !important;
473
- font-weight: 600 !important;
474
- font-size: 14px !important;
475
- letter-spacing: 0 !important;
476
- color: var(--panel-text) !important;
477
- text-transform: lowercase;
478
- margin: 0 !important;
479
- display: inline-flex;
480
- align-items: center;
481
- }
482
- .brand-line .slash {
483
- color: var(--panel-text-3);
484
- font-weight: 400;
485
- margin: 0 2px;
486
- }
487
- .brand-line .leaf {
488
- color: var(--panel-accent);
489
- font-weight: 500;
490
- }
491
-
492
- /* Main header — flatten to app-topbar style */
493
- .main-header {
494
- background: var(--panel-2) !important;
495
- height: 40px !important;
496
- min-height: 40px !important;
497
- padding: 0 16px !important;
498
- gap: 12px !important;
499
- box-shadow: none !important;
500
- }
501
- .main-header .header-title {
502
- font-family: var(--ff-mono) !important;
503
- font-size: 14px !important;
504
- font-weight: 600 !important;
505
- text-transform: lowercase;
506
- }
507
-
508
- /* Sidebar header */
509
- .sidebar-header {
510
- background: var(--panel-2) !important;
511
- height: 40px !important;
512
- min-height: 40px !important;
513
- padding: 0 12px !important;
514
- }
515
- .sidebar-header h2.brand-line {
516
- font-size: 13px !important;
517
- }
518
- .sidebar-header .btn-stamp {
519
- padding: 4px 10px !important;
520
- font-size: 11px !important;
521
- height: 26px !important;
522
- line-height: 1 !important;
523
- box-shadow: 2px 2px 0 var(--ink) !important;
524
- }
525
- .sidebar-header .btn-stamp:hover {
526
- box-shadow: 1px 1px 0 var(--ink) !important;
527
- transform: translate(1px,1px);
528
- }
529
-
530
- /* Welcome pane — app-main narrow style */
531
- .welcome-pane {
532
- max-width: 720px;
533
- margin: 0 auto;
534
- padding: 48px 32px;
535
- display: flex;
536
- flex-direction: column;
537
- gap: 32px;
538
- }
539
- .welcome-head { display: flex; flex-direction: column; gap: 8px; }
540
- .welcome-title {
541
- font-family: var(--ff-display);
542
- font-size: 36px;
543
- font-weight: 800;
544
- letter-spacing: -0.01em;
545
- line-height: 1.1;
546
- margin: 0;
547
- color: var(--panel-text);
548
- text-transform: lowercase;
549
- }
550
- .welcome-lede {
551
- font-size: 14px;
552
- line-height: 1.6;
553
- color: var(--panel-text-2);
554
- margin: 0;
555
- max-width: 60ch;
556
- }
557
- .welcome-select-row {
558
- display: flex;
559
- flex-direction: column;
560
- gap: 8px;
561
- max-width: 280px;
562
- }
563
- .welcome-rows {
564
- display: flex;
565
- flex-direction: column;
566
- gap: 8px;
567
- }
568
- .welcome-rows .row {
569
- grid-template-columns: 40px 180px 1fr;
570
- padding: 12px 16px;
571
- background: var(--panel-1);
572
- border-radius: 0;
573
- }
574
- .welcome-rows .row .row-code {
575
- color: var(--panel-accent);
576
- font-weight: 600;
577
- }
578
- .welcome-rows .row .row-title {
579
- font-family: var(--ff-mono);
580
- font-weight: 600;
581
- font-size: 13px;
582
- letter-spacing: 0;
583
- color: var(--panel-text);
584
- text-transform: lowercase;
585
- }
586
- .welcome-rows .row .row-meta {
587
- color: var(--panel-text-2);
588
- text-transform: none;
589
- letter-spacing: 0;
590
- font-size: 12px;
591
- }