agentgui 1.0.895 → 1.0.897

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.
@@ -0,0 +1,568 @@
1
+ /* ============================================================
2
+ Design tokens — brand palette + type scale + motion
3
+ Loads before any consumer rule; all var(--*) refs resolve.
4
+ ============================================================ */
5
+ :root {
6
+ --paper: #EFE9DD;
7
+ --ink: #0B0B09;
8
+ --acid: #B8FF00;
9
+ --link: #1F4DFF;
10
+ --warn: #FF3B1F;
11
+ --live: #00A86B;
12
+
13
+ --green: #247420;
14
+ --green-2: #92CEAC;
15
+ --green-deep: #1c5a19;
16
+ --green-fg: #FFFFFF;
17
+ --purple: #420247;
18
+ --purple-fg: #FFFFFF;
19
+ --mascot: #E84B8A;
20
+ --mascot-fg: #FFFFFF;
21
+ --sun: #FFD100;
22
+
23
+ --ff-display: 'Archivo Black', 'Archivo', system-ui, sans-serif;
24
+ --ff-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
25
+ --ff-prose: 'Instrument Serif', Georgia, serif;
26
+
27
+ --fs-hero: 120px;
28
+ --fs-h1: 64px;
29
+ --fs-h2: 32px;
30
+ --lh-tight: 1.05;
31
+ --lh-snug: 1.2;
32
+ --tr-tight: -0.02em;
33
+
34
+ --dur-snap: 80ms;
35
+ --dur-base: 160ms;
36
+ --ease: cubic-bezier(0.2, 0, 0, 1);
37
+
38
+ --surface-2: rgba(0,0,0,0.04);
39
+ --surface-ink-2: rgba(255,255,255,0.06);
40
+
41
+ --r-1: 0;
42
+ --r-2: 0;
43
+ --r-3: 0;
44
+ --r-pill: 9999px;
45
+
46
+ /* Extended brand palette */
47
+ --flame: #FF5C1A;
48
+ --sky: #3B82F6;
49
+
50
+ /* Foreground / background aliases — resolved after panel tokens are set;
51
+ these are reset below once panel tokens exist, but raw defaults here
52
+ ensure no unsatisfied var() at parse time if panel tokens are absent. */
53
+ --fg: #0B0B09;
54
+ --fg-3: #6d675b;
55
+ --bg: #EFE9DD;
56
+ --bg-2: #ece5d8;
57
+
58
+ /* Colorful-mono palette — canonical hue per slot */
59
+ --mono-1: var(--green);
60
+ --mono-2: var(--purple);
61
+ --mono-3: var(--mascot);
62
+ --mono-4: var(--sun);
63
+ --mono-5: var(--flame);
64
+ --mono-6: var(--sky);
65
+
66
+ /* Spacing scale (4px base) */
67
+ --space-1: 4px;
68
+ --space-2: 8px;
69
+ --space-3: 12px;
70
+ --space-4: 16px;
71
+ --space-5: 24px;
72
+ --space-6: 32px;
73
+ --space-7: 48px;
74
+ --space-8: 64px;
75
+
76
+ /* Border widths */
77
+ --bw-hair: 1px;
78
+ --bw-rule: 2px;
79
+
80
+ /* Measure */
81
+ --measure: 72ch;
82
+
83
+ /* Extended type scale */
84
+ --fs-body: 13px;
85
+ --fs-lg: 14px;
86
+ --fs-sm: 12px;
87
+ --fs-xs: 11px;
88
+ --fs-tiny: 11px;
89
+ --fs-micro: 9px;
90
+ --fs-h3: 14px;
91
+ --fs-h4: 13px;
92
+
93
+ /* Extended line heights */
94
+ --lh-base: 1.5;
95
+ --lh-long: 1.6;
96
+
97
+ /* Extended letter spacing */
98
+ --tr-label: 0.08em;
99
+ --tr-caps: 0.05em;
100
+
101
+ /* Font body alias */
102
+ --ff-body: var(--ff-prose);
103
+ }
104
+
105
+ /* Rows: no separators, hover surface tint instead */
106
+ .row { background: transparent; transition: background var(--dur-snap) var(--ease); }
107
+ .row:hover { background: var(--surface-2); }
108
+ [data-theme="ink"] .row:hover { background: var(--surface-ink-2); }
109
+
110
+ body {
111
+ background: var(--panel-0);
112
+ color: var(--panel-text);
113
+ font-family: var(--ff-mono);
114
+ font-size: 13px;
115
+ line-height: 1.5;
116
+ -webkit-font-smoothing: antialiased;
117
+ -moz-osx-font-smoothing: grayscale;
118
+ text-rendering: optimizeLegibility;
119
+ }
120
+
121
+ /* ============================================================
122
+ Semantic type classes
123
+ ============================================================ */
124
+
125
+ /* Hero — project name, once per page. Archivo Black territory. */
126
+ .t-hero, h1.hero {
127
+ font-family: var(--ff-display);
128
+ font-size: clamp(64px, 12vw, var(--fs-hero));
129
+ line-height: var(--lh-tight);
130
+ letter-spacing: var(--tr-tight);
131
+ font-weight: 800;
132
+ margin: 0;
133
+ }
134
+
135
+ /* h1 — page title */
136
+ .t-h1, h1 {
137
+ font-family: var(--ff-display);
138
+ font-size: clamp(40px, 6vw, var(--fs-h1));
139
+ line-height: var(--lh-tight);
140
+ letter-spacing: var(--tr-tight);
141
+ font-weight: 700;
142
+ margin: 0;
143
+ }
144
+
145
+ /* h2 — section */
146
+ .t-h2, h2 {
147
+ font-family: var(--ff-display);
148
+ font-size: var(--fs-h2);
149
+ line-height: var(--lh-snug);
150
+ letter-spacing: var(--tr-tight);
151
+ font-weight: 700;
152
+ margin: 0;
153
+ }
154
+
155
+ /* h3 — subsection (mono, colorful-eligible) */
156
+ .t-h3, h3 {
157
+ font-family: var(--ff-mono);
158
+ font-size: var(--fs-h3);
159
+ line-height: var(--lh-snug);
160
+ letter-spacing: 0;
161
+ font-weight: 600;
162
+ margin: 0;
163
+ }
164
+
165
+ /* h4 */
166
+ .t-h4, h4 {
167
+ font-family: var(--ff-mono);
168
+ font-size: var(--fs-h4);
169
+ line-height: var(--lh-snug);
170
+ font-weight: 500;
171
+ margin: 0;
172
+ }
173
+
174
+ /* Body UI — mono, the default UI voice */
175
+ .t-body {
176
+ font-family: var(--ff-mono);
177
+ font-size: var(--fs-body);
178
+ line-height: var(--lh-base);
179
+ }
180
+
181
+ /* Long-form prose — SANS, not serif. Space Grotesk. */
182
+ .t-prose, .prose p {
183
+ font-family: var(--ff-body);
184
+ font-size: var(--fs-lg);
185
+ line-height: var(--lh-long);
186
+ max-width: var(--measure);
187
+ text-wrap: pretty;
188
+ font-weight: 400;
189
+ }
190
+ .prose p { margin: 0 0 var(--space-4) 0; }
191
+
192
+ /* Label — mono caps, terminal voice */
193
+ .t-label {
194
+ font-family: var(--ff-mono);
195
+ font-size: var(--fs-xs);
196
+ text-transform: uppercase;
197
+ letter-spacing: var(--tr-label);
198
+ font-weight: 500;
199
+ }
200
+
201
+ /* Meta — mono, small, dim */
202
+ .t-meta {
203
+ font-family: var(--ff-mono);
204
+ font-size: var(--fs-xs);
205
+ color: var(--fg-3);
206
+ }
207
+
208
+ /* Micro — smallest, datelines */
209
+ .t-micro {
210
+ font-family: var(--ff-mono);
211
+ font-size: var(--fs-micro);
212
+ letter-spacing: var(--tr-label);
213
+ text-transform: uppercase;
214
+ color: var(--fg-3);
215
+ }
216
+
217
+ /* Pull — display, for section intros and callouts */
218
+ .t-pull {
219
+ font-family: var(--ff-display);
220
+ font-size: var(--fs-h2);
221
+ line-height: var(--lh-snug);
222
+ font-weight: 600;
223
+ max-width: 20ch;
224
+ letter-spacing: var(--tr-tight);
225
+ }
226
+
227
+ /* Code */
228
+ code, .t-code {
229
+ font-family: var(--ff-mono);
230
+ font-size: 0.9em;
231
+ background: var(--bg-2);
232
+ padding: 0.15em 0.5em;
233
+
234
+ border-radius: var(--r-1);
235
+ }
236
+
237
+ /* ============================================================
238
+ COLORFUL MONO — the signature treatment
239
+ Mono is the UI voice. We don't leave it grey. Every mono block
240
+ is allowed — encouraged — to carry a canonical hue per token.
241
+ ============================================================ */
242
+
243
+ /* Hue utilities — apply to mono runs to tint them */
244
+ .mono-green { color: var(--mono-1); }
245
+ .mono-purple { color: var(--mono-2); }
246
+ .mono-mascot { color: var(--mono-3); }
247
+ .mono-sun { color: var(--mono-4); }
248
+ .mono-flame { color: var(--mono-5); }
249
+ .mono-sky { color: var(--mono-6); }
250
+ .mono-ink { color: var(--fg); }
251
+ .mono-dim { color: var(--fg-3); }
252
+
253
+ /* Highlight block — a mono run on a tinted bg with dark text */
254
+ .hl-green { background: var(--green); color: var(--green-fg); padding: 0.08em 0.4em; border-radius: var(--r-1); }
255
+ .hl-purple { background: var(--purple); color: var(--purple-fg); padding: 0.08em 0.4em; border-radius: var(--r-1); }
256
+ .hl-mascot { background: var(--mascot); color: var(--mascot-fg); padding: 0.08em 0.4em; border-radius: var(--r-1); }
257
+ .hl-sun { background: var(--sun); color: var(--ink); padding: 0.08em 0.4em; border-radius: var(--r-1); }
258
+ .hl-flame { background: var(--flame); color: var(--paper); padding: 0.08em 0.4em; border-radius: var(--r-1); }
259
+ .hl-sky { background: var(--sky); color: var(--paper); padding: 0.08em 0.4em; border-radius: var(--r-1); }
260
+
261
+ /* Role-colored mono spans — semantic, self-documenting */
262
+ .m-k { color: var(--mono-2); font-weight: 500; } /* keyword */
263
+ .m-s { color: var(--mono-4); } /* string */
264
+ .m-n { color: var(--mono-1); } /* number / live */
265
+ .m-c { color: var(--fg-3); font-style: italic; } /* comment */
266
+ .m-tag { color: var(--mono-3); } /* tag / mention */
267
+ .m-op { color: var(--mono-5); } /* operator / punct */
268
+ .m-ref { color: var(--mono-6); text-decoration: underline; text-underline-offset: 3px; }
269
+
270
+ /* Links in prose */
271
+ .prose a, a.t-link {
272
+ color: var(--link);
273
+ text-decoration: underline;
274
+ text-underline-offset: 3px;
275
+ text-decoration-thickness: 1px;
276
+ }
277
+ .prose a:hover, a.t-link:hover {
278
+ background: var(--link);
279
+ color: var(--paper);
280
+ text-decoration: none;
281
+ }
282
+
283
+ /* ============================================================
284
+ Primitives — rules, stamps, buttons
285
+ ============================================================ */
286
+
287
+ .rule { margin: 0; }
288
+ .rule-double{ height: var(--bw-rule); margin: 0; }
289
+ .rule-dotted{ margin: 0; }
290
+ .rule-green { margin: 0; }
291
+ .rule-purple{ margin: 0; }
292
+ .rule-mascot{ margin: 0; }
293
+
294
+ /* The 247420 stamp */
295
+ .stamp {
296
+ display: inline-block;
297
+ padding: var(--space-1) var(--space-3);
298
+
299
+ border-radius: var(--r-pill);
300
+ color: var(--fg);
301
+ background: transparent;
302
+ font-family: var(--ff-mono);
303
+ font-size: var(--fs-tiny);
304
+ letter-spacing: var(--tr-label);
305
+ text-transform: uppercase;
306
+ font-weight: 600;
307
+ transform: rotate(-2deg);
308
+ }
309
+ .stamp.ink { background: var(--fg); color: var(--bg); }
310
+ .stamp.green { background: var(--green); color: var(--green-fg); }
311
+ .stamp.purple { background: var(--purple); color: var(--purple-fg); }
312
+ .stamp.mascot { background: var(--mascot); color: var(--mascot-fg); }
313
+ .stamp.sun { background: var(--sun); color: var(--ink); }
314
+ .stamp.flame { background: var(--flame); color: var(--paper); }
315
+
316
+ /* Legacy alias — .stamp.acid now means green */
317
+ .stamp.acid { background: var(--green); color: var(--green-fg); }
318
+
319
+ /* The "stamp button" */
320
+ .btn-stamp {
321
+ display: inline-flex;
322
+ align-items: center;
323
+ gap: var(--space-2);
324
+ padding: var(--space-3) var(--space-4);
325
+ background: var(--fg);
326
+ color: var(--bg);
327
+
328
+ border-radius: var(--r-2);
329
+ box-shadow: 4px 4px 0 var(--fg);
330
+ font-family: var(--ff-mono);
331
+ font-weight: 600;
332
+ font-size: var(--fs-sm);
333
+ text-transform: uppercase;
334
+ letter-spacing: var(--tr-caps);
335
+ text-decoration: none;
336
+ cursor: pointer;
337
+ transition: transform var(--dur-snap) var(--ease), box-shadow var(--dur-snap) var(--ease);
338
+ }
339
+ .btn-stamp:hover { transform: translate(1px, 1px); box-shadow: 3px 3px 0 var(--fg); }
340
+ .btn-stamp:active { transform: translate(4px, 4px); box-shadow: 0 0 0 var(--fg); }
341
+
342
+ .btn-stamp.green { background: var(--green); color: var(--green-fg); box-shadow: 4px 4px 0 var(--ink); }
343
+ .btn-stamp.purple { background: var(--purple); color: var(--purple-fg); box-shadow: 4px 4px 0 var(--ink); }
344
+ .btn-stamp.mascot { background: var(--mascot); color: var(--mascot-fg); box-shadow: 4px 4px 0 var(--ink); }
345
+ .btn-stamp.sun { background: var(--sun); color: var(--ink); box-shadow: 4px 4px 0 var(--ink); }
346
+ .btn-stamp.flame { background: var(--flame); color: var(--paper); box-shadow: 4px 4px 0 var(--ink); }
347
+ .btn-stamp.acid { background: var(--green); color: var(--green-fg); box-shadow: 4px 4px 0 var(--ink); } /* legacy */
348
+
349
+ /* Plain button — default */
350
+ .btn {
351
+ display: inline-flex;
352
+ align-items: center;
353
+ gap: var(--space-2);
354
+ padding: var(--space-3) var(--space-4);
355
+ background: transparent;
356
+ color: var(--fg);
357
+
358
+ border-radius: var(--r-2);
359
+ font-family: var(--ff-mono);
360
+ font-weight: 500;
361
+ font-size: var(--fs-sm);
362
+ text-transform: uppercase;
363
+ letter-spacing: var(--tr-caps);
364
+ text-decoration: none;
365
+ cursor: pointer;
366
+ transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
367
+ }
368
+ .btn:hover { background: var(--fg); color: var(--bg); }
369
+ .btn:active { background: var(--green); color: var(--green-fg); }
370
+
371
+ /* Ghost/link button */
372
+ .btn-ghost {
373
+ background: transparent;
374
+
375
+ color: var(--fg);
376
+ font-family: var(--ff-mono);
377
+ font-size: var(--fs-sm);
378
+ text-transform: uppercase;
379
+ letter-spacing: var(--tr-caps);
380
+ padding: var(--space-2) 0;
381
+ cursor: pointer;
382
+ text-decoration: underline;
383
+ text-underline-offset: 4px;
384
+ }
385
+ .btn-ghost:hover { color: var(--green-fg); background: var(--green); }
386
+
387
+ /* Input — softened: full border, rounded, 2px default */
388
+ .input {
389
+ width: 100%;
390
+ background: var(--bg);
391
+
392
+ border-radius: var(--r-2);
393
+ padding: var(--space-3) var(--space-3);
394
+ font-family: var(--ff-mono);
395
+ font-size: var(--fs-body);
396
+ color: var(--fg);
397
+
398
+ transition: border-color var(--dur-snap) var(--ease), box-shadow var(--dur-snap) var(--ease);
399
+ }
400
+ .input:focus {
401
+
402
+ box-shadow: 0 0 0 4px color-mix(in oklab, var(--green) 25%, transparent);
403
+ }
404
+ .input::placeholder { color: var(--fg-3); }
405
+
406
+ /* ============================================================
407
+ Layout scaffolds
408
+ ============================================================ */
409
+
410
+ .page { min-height: 100vh; padding: var(--space-5); }
411
+
412
+ .dateline {
413
+ display: flex;
414
+ justify-content: space-between;
415
+ align-items: baseline;
416
+ gap: var(--space-4);
417
+ padding-bottom: var(--space-2);
418
+
419
+ font-family: var(--ff-mono);
420
+ font-size: var(--fs-xs);
421
+ text-transform: uppercase;
422
+ letter-spacing: var(--tr-label);
423
+ }
424
+ .dateline > * { white-space: nowrap; }
425
+ .dateline .spread { flex: 1; align-self: center; }
426
+
427
+ /* Index-card row — soft card with breathing room */
428
+ .row {
429
+ display: grid;
430
+ grid-template-columns: 80px 1fr auto;
431
+ gap: var(--space-4);
432
+ padding: var(--space-4);
433
+
434
+ border-radius: var(--r-3);
435
+ background: var(--bg);
436
+ align-items: baseline;
437
+ margin-bottom: calc(var(--bw-hair) * -1);
438
+ transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease), transform var(--dur-snap) var(--ease);
439
+ }
440
+ .row + .row { margin-top: var(--space-2); margin-bottom: 0; }
441
+ .row .row-code { font-family: var(--ff-mono); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: var(--tr-label); color: var(--mono-1); }
442
+ .row .row-title { font-family: var(--ff-display); font-weight: 700; font-size: var(--fs-h3); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); }
443
+ .row .row-meta { font-family: var(--ff-mono); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: var(--tr-label); color: var(--fg-3); }
444
+ .row:hover { background: var(--green); color: var(--green-fg); transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--ink); }
445
+ .row:hover .row-code { color: var(--sun); }
446
+ .row:hover .row-meta { color: var(--green-fg); }
447
+
448
+ /* Soft card — the generic container */
449
+ .card {
450
+
451
+ border-radius: var(--r-3);
452
+ background: var(--bg);
453
+ padding: var(--space-5);
454
+ }
455
+ .card.chunk { }
456
+
457
+ /* ============================================================
458
+ Selection
459
+ ============================================================ */
460
+ ::selection { background: var(--mascot); color: var(--mascot-fg); }
461
+
462
+
463
+ /* ============================================================
464
+ Panel surface tokens — brand-bible parchment palette
465
+ Light default. Dark via prefers-color-scheme or [data-theme="dark"].
466
+ ============================================================ */
467
+ :root {
468
+ --panel-0: var(--paper); /* #EFE9DD canvas */
469
+ --panel-1: #f6f1e7;
470
+ --panel-2: #ece5d8;
471
+ --panel-3: #ddd4c3;
472
+ --panel-hover: #e6dece;
473
+ --panel-select: #d8eed6;
474
+ --panel-text: var(--ink); /* #0B0B09 */
475
+ --panel-text-2: #4a473f;
476
+ --panel-text-3: #6d675b;
477
+ --panel-accent: var(--green);
478
+ --panel-accent-2: var(--green-deep);
479
+ --panel-accent-fg: #ffffff;
480
+ --panel-shadow: none;
481
+ --panel-shadow-top: none;
482
+ }
483
+
484
+ @media (prefers-color-scheme: dark) {
485
+ :root:not([data-theme="light"]) {
486
+ --panel-0: #0B0B09;
487
+ --panel-1: #141411;
488
+ --panel-2: #1f1f1a;
489
+ --panel-3: #2a2a23;
490
+ --panel-hover: #24241f;
491
+ --panel-select: #1f3520;
492
+ --panel-text: #EFE9DD;
493
+ --panel-text-2: #d2cab9;
494
+ --panel-text-3: #afa797;
495
+ --panel-accent: var(--green-2);
496
+ --panel-accent-2: var(--green-2);
497
+ --panel-accent-fg: var(--ink);
498
+ --panel-shadow: none;
499
+ --panel-shadow-top: none;
500
+ }
501
+ }
502
+
503
+ [data-theme="dark"] {
504
+ --panel-0: #0B0B09;
505
+ --panel-1: #141411;
506
+ --panel-2: #1f1f1a;
507
+ --panel-3: #2a2a23;
508
+ --panel-hover: #24241f;
509
+ --panel-select: #1f3520;
510
+ --panel-text: #EFE9DD;
511
+ --panel-text-2: #d2cab9;
512
+ --panel-text-3: #afa797;
513
+ --panel-accent: var(--green-2);
514
+ --panel-accent-2: var(--green-2);
515
+ --panel-accent-fg: var(--ink);
516
+ --panel-shadow: none;
517
+ --panel-shadow-top: none;
518
+ }
519
+
520
+ [data-theme="light"] {
521
+ --panel-0: var(--paper);
522
+ --panel-1: #f6f1e7;
523
+ --panel-2: #ece5d8;
524
+ --panel-3: #ddd4c3;
525
+ --panel-hover: #e6dece;
526
+ --panel-select: #d8eed6;
527
+ --panel-text: var(--ink);
528
+ --panel-text-2: #4a473f;
529
+ --panel-text-3: #6d675b;
530
+ --panel-accent: var(--green);
531
+ --panel-accent-2: var(--green-deep);
532
+ --panel-accent-fg: #ffffff;
533
+ --panel-shadow: none;
534
+ }
535
+
536
+ /* Foreground / background aliases derived from panel tokens */
537
+ :root {
538
+ --fg: var(--panel-text);
539
+ --fg-3: var(--panel-text-3);
540
+ --bg: var(--panel-0);
541
+ --bg-2: var(--panel-2);
542
+ }
543
+ @media (prefers-color-scheme: dark) {
544
+ :root:not([data-theme="light"]) {
545
+ --fg: var(--panel-text);
546
+ --fg-3: var(--panel-text-3);
547
+ --bg: var(--panel-0);
548
+ --bg-2: var(--panel-2);
549
+ }
550
+ }
551
+ [data-theme="dark"] { --fg: var(--panel-text); --fg-3: var(--panel-text-3); --bg: var(--panel-0); --bg-2: var(--panel-2); }
552
+ [data-theme="light"] { --fg: var(--panel-text); --fg-3: var(--panel-text-3); --bg: var(--panel-0); --bg-2: var(--panel-2); }
553
+
554
+ /* Contrast safety on any acid/lime/mint surface — text must be ink,
555
+ never light grey / white. Covers the --acid token and any hue that
556
+ pairs a near-white fg against a near-white accent. */
557
+ .on-acid, .on-lime, [data-accent="acid"], [data-accent="lime"] {
558
+ background: var(--acid);
559
+ color: var(--ink);
560
+ }
561
+ .on-acid *, .on-lime *, [data-accent="acid"] *, [data-accent="lime"] * {
562
+ color: inherit;
563
+ }
564
+
565
+ /* Universal reset — no borders, no outlines except :focus-visible */
566
+ *, *::before, *::after { box-sizing: border-box; border: 0 !important; outline: 0 !important; }
567
+ :focus-visible { outline: 2px solid var(--panel-accent) !important; outline-offset: 2px; }
568
+ html, body { margin: 0; padding: 0; }