@cychien/ezdesign 0.0.0-stage → 0.9.1

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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +615 -2
  3. package/dist/announcements/template-ERNKAKI5.svg +33 -0
  4. package/dist/cli.mjs +10095 -0
  5. package/dist/constants.d.ts +73 -0
  6. package/dist/events-worker.js +77 -0
  7. package/dist/extension/g/0.9.1-16d05e759b/dialog.css +1 -0
  8. package/dist/extension/g/0.9.1-16d05e759b/dialog.html +13 -0
  9. package/dist/extension/g/0.9.1-16d05e759b/dialog.js +1 -0
  10. package/dist/extension/g/0.9.1-16d05e759b/icon-128.png +0 -0
  11. package/dist/extension/g/0.9.1-16d05e759b/icon-16.png +0 -0
  12. package/dist/extension/g/0.9.1-16d05e759b/icon-32.png +0 -0
  13. package/dist/extension/g/0.9.1-16d05e759b/icon-48.png +0 -0
  14. package/dist/extension/g/0.9.1-16d05e759b/media.html +9 -0
  15. package/dist/extension/g/0.9.1-16d05e759b/media.js +1 -0
  16. package/dist/extension/g/0.9.1-16d05e759b/page.js +39 -0
  17. package/dist/extension/g/0.9.1-16d05e759b/setup.css +1 -0
  18. package/dist/extension/g/0.9.1-16d05e759b/setup.html +17 -0
  19. package/dist/extension/g/0.9.1-16d05e759b/setup.js +1 -0
  20. package/dist/extension/g/0.9.1-16d05e759b/worker.js +57 -0
  21. package/dist/extension/manifest.json +57 -0
  22. package/dist/native-host.mjs +20594 -0
  23. package/dist/overlay.css +422 -0
  24. package/dist/overlay.js +2642 -0
  25. package/dist/project-root.d.ts +10 -0
  26. package/dist/shell.css +4060 -0
  27. package/dist/shell.js +8284 -0
  28. package/dist/vite.d.ts +26 -0
  29. package/dist/vite.mjs +105 -0
  30. package/package.json +82 -4
  31. package/skills/ezdesign/SKILL.md +35 -0
  32. package/skills/ezdesign/reference/baseline.md +131 -0
  33. package/skills/ezdesign/reference/components.md +102 -0
  34. package/skills/ezdesign/reference/critique.md +129 -0
  35. package/skills/ezdesign/reference/design.md +247 -0
  36. package/skills/ezdesign/reference/inspiration.md +125 -0
  37. package/skills/ezdesign/reference/make.md +331 -0
  38. package/skills/ezdesign/reference/principles.md +130 -0
  39. package/skills/ezdesign/reference/product.md +127 -0
  40. package/skills/ezdesign/reference/stack.md +123 -0
  41. package/skills/ezdesign/reference/start.md +78 -0
  42. package/skills/ezdesign/scripts/page.d.mts +61 -0
  43. package/skills/ezdesign/scripts/page.mjs +908 -0
package/dist/shell.css ADDED
@@ -0,0 +1,4060 @@
1
+ /* src/client/shell.css */
2
+ :root {
3
+ --paper: #faf9f6;
4
+ --paper-sunken: #f2f0e9;
5
+ --paper-edge: #e9e6dd;
6
+ --ink: #171717;
7
+ --ink-muted: #676767;
8
+ --ink-faint: #878787;
9
+ --ink-ghost: #b3b3b3;
10
+ --background: var(--paper);
11
+ --panel: #fff;
12
+ --foreground: var(--ink);
13
+ --muted: var(--paper-sunken);
14
+ --muted-foreground: var(--ink-muted);
15
+ --border: var(--paper-edge);
16
+ --primary: var(--ink);
17
+ --primary-foreground: #fff;
18
+ --ring: var(--ink-ghost);
19
+ --ring-halo: color-mix(in oklab, var(--ink) 12%, transparent);
20
+ --radius: 8px;
21
+ --mark: #e56d41;
22
+ --mark-foreground: #fff;
23
+ --arrange: #0d99ff;
24
+ --premium: #d6a21e;
25
+ --app-accent: #ee7a2a;
26
+ --attach: #cee7c1;
27
+ --attach-ink: #3d5c36;
28
+ --ref: #f4d3e2;
29
+ --ref-ink: #7b3a5c;
30
+ --ref-accent: #cf5f92;
31
+ --explore-ink: #5e3f8c;
32
+ --explore-accent: #6b3baa;
33
+ --explore-on-ink: #a97ae0;
34
+ --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
35
+ --t-pop: 0.16s;
36
+ --t-menu: 0.18s;
37
+ --t-view: 0.22s;
38
+ --code-ink: #b4482a;
39
+ --code-fill: rgba(180, 72, 42, 0.09);
40
+ --update-ink: #2566ba;
41
+ --skill-ink: #1a6aa8;
42
+ --tag: #ece3d6;
43
+ --tag-ink: #6b5038;
44
+ --danger: oklch(52% 0.2 25);
45
+ --image-outline: oklch(0% 0 0 / 0.06);
46
+ }
47
+ * {
48
+ box-sizing: border-box;
49
+ }
50
+ html,
51
+ body {
52
+ margin: 0;
53
+ height: 100%;
54
+ }
55
+ body {
56
+ font-family:
57
+ -apple-system,
58
+ BlinkMacSystemFont,
59
+ "Segoe UI",
60
+ "Noto Sans TC",
61
+ sans-serif;
62
+ background: var(--background);
63
+ color: var(--foreground);
64
+ -webkit-font-smoothing: antialiased;
65
+ }
66
+ button {
67
+ font-family: inherit;
68
+ }
69
+ :focus-visible {
70
+ outline: 3px solid var(--ring-halo);
71
+ outline-offset: 0;
72
+ }
73
+ #ez-shell {
74
+ position: relative;
75
+ display: flex;
76
+ height: 100vh;
77
+ }
78
+ .ez-stage-wrap {
79
+ position: relative;
80
+ flex: 1;
81
+ display: flex;
82
+ min-width: 0;
83
+ }
84
+ .ez-shown {
85
+ position: absolute;
86
+ top: 10px;
87
+ right: 10px;
88
+ z-index: 6;
89
+ }
90
+ .ez-shown[data-hidden] {
91
+ display: none;
92
+ }
93
+ .ez-shown-btn {
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: center;
97
+ width: 28px;
98
+ height: 28px;
99
+ border-radius: 8px;
100
+ border: 1px solid var(--border);
101
+ background: var(--panel);
102
+ color: var(--muted-foreground);
103
+ cursor: pointer;
104
+ box-shadow: 0 1px 3px oklch(0% 0 0 / 0.06);
105
+ transition: color 0.12s ease, border-color 0.12s ease;
106
+ }
107
+ .ez-shown-btn:hover,
108
+ .ez-shown[data-open] .ez-shown-btn {
109
+ color: var(--foreground);
110
+ border-color: var(--ink-ghost);
111
+ }
112
+ .ez-stage {
113
+ flex: 1;
114
+ overflow: auto;
115
+ min-width: 0;
116
+ scrollbar-gutter: stable;
117
+ }
118
+ .ez-grid {
119
+ width: fit-content;
120
+ margin: 0 auto;
121
+ display: flex;
122
+ flex-direction: column;
123
+ align-items: flex-start;
124
+ gap: 26px;
125
+ }
126
+ .ez-grid[hidden],
127
+ .ez-seg[hidden] {
128
+ display: none;
129
+ }
130
+ .ez-stage.ez-multi .ez-grid {
131
+ position: relative;
132
+ display: block;
133
+ margin: 0;
134
+ }
135
+ .ez-stage.ez-multi .ez-card {
136
+ position: absolute;
137
+ }
138
+ .ez-stage.ez-multi .ez-card-head {
139
+ cursor: grab;
140
+ touch-action: none;
141
+ }
142
+ .ez-card.ez-card-drag {
143
+ z-index: 3;
144
+ opacity: 0.92;
145
+ will-change: transform;
146
+ }
147
+ .ez-stage.ez-multi .ez-screen {
148
+ transition: box-shadow 0.18s ease;
149
+ }
150
+ .ez-card.ez-card-drag .ez-screen {
151
+ box-shadow: 0 18px 44px rgba(23, 23, 23, 0.16);
152
+ }
153
+ .ez-grid[data-settle] .ez-card {
154
+ transition: transform 0.22s cubic-bezier(0.2, 0, 0, 1);
155
+ }
156
+ .ez-drop-hint {
157
+ position: absolute;
158
+ z-index: 4;
159
+ pointer-events: none;
160
+ background: var(--ink);
161
+ border-radius: 2px;
162
+ opacity: 0;
163
+ transition: opacity 0.1s ease;
164
+ }
165
+ .ez-drop-hint[data-on] {
166
+ opacity: 1;
167
+ }
168
+ .ez-drop-hint:not([data-flat]) {
169
+ width: 3px;
170
+ transform: translateX(-50%);
171
+ }
172
+ .ez-drop-hint[data-flat] {
173
+ height: 3px;
174
+ transform: translateY(-50%);
175
+ }
176
+ .ez-stage.ez-framed {
177
+ padding: 16px;
178
+ }
179
+ .ez-stage.ez-multi {
180
+ padding: 28px 32px 44px;
181
+ cursor: grab;
182
+ }
183
+ body.ez-panning,
184
+ body.ez-panning .ez-stage,
185
+ body.ez-arranging,
186
+ body.ez-arranging .ez-stage,
187
+ body.ez-arranging .ez-card-head {
188
+ cursor: grabbing;
189
+ user-select: none;
190
+ }
191
+ body.ez-panning .ez-frame,
192
+ body.ez-arranging .ez-frame {
193
+ pointer-events: none;
194
+ }
195
+ .ez-card {
196
+ display: flex;
197
+ flex-direction: column;
198
+ gap: 7px;
199
+ flex-shrink: 0;
200
+ }
201
+ .ez-stage:not(.ez-multi) .ez-card-head {
202
+ display: none;
203
+ }
204
+ .ez-card-head {
205
+ font-size: 11.5px;
206
+ line-height: 1;
207
+ color: var(--muted-foreground);
208
+ padding-left: 2px;
209
+ white-space: nowrap;
210
+ }
211
+ .ez-framed .ez-screen {
212
+ border-radius: 10px;
213
+ outline: 1px solid var(--border);
214
+ overflow: hidden;
215
+ }
216
+ .ez-screen::after {
217
+ content: "";
218
+ position: absolute;
219
+ inset: 0;
220
+ border-radius: inherit;
221
+ pointer-events: none;
222
+ display: none;
223
+ box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--veil-edge) 62%, transparent);
224
+ }
225
+ .ez-stage[data-ez-veil] .ez-screen::after {
226
+ display: block;
227
+ }
228
+ .ez-stage[data-ez-veil=pick] {
229
+ --veil-edge: var(--ref-accent);
230
+ }
231
+ .ez-stage[data-ez-veil=explore] {
232
+ --veil-edge: var(--explore-accent);
233
+ }
234
+ .ez-screen {
235
+ flex-shrink: 0;
236
+ position: relative;
237
+ }
238
+ .ez-frame-wrap {
239
+ width: 100%;
240
+ height: 100%;
241
+ transform-origin: top left;
242
+ }
243
+ .ez-frame {
244
+ display: block;
245
+ width: 100%;
246
+ height: 100%;
247
+ border: none;
248
+ background: #fff;
249
+ }
250
+ .ez-sidebar-slot {
251
+ display: flex;
252
+ flex-shrink: 0;
253
+ }
254
+ .ez-sidebar-slot[data-collapsed] {
255
+ width: 0;
256
+ overflow: hidden;
257
+ }
258
+ .ez-sidebar {
259
+ position: relative;
260
+ flex-shrink: 0;
261
+ background: var(--background);
262
+ border-left: 1px solid var(--border);
263
+ display: flex;
264
+ flex-direction: column;
265
+ min-height: 0;
266
+ }
267
+ .ez-activity {
268
+ display: flex;
269
+ flex-direction: column;
270
+ align-items: center;
271
+ gap: 4px;
272
+ flex-shrink: 0;
273
+ width: 44px;
274
+ padding-top: 5px;
275
+ background: var(--background);
276
+ border-left: 1px solid var(--border);
277
+ }
278
+ .ez-activity-btn {
279
+ position: relative;
280
+ display: grid;
281
+ place-items: center;
282
+ width: 32px;
283
+ height: 32px;
284
+ padding: 0;
285
+ border: none;
286
+ border-radius: 8px;
287
+ background: transparent;
288
+ color: var(--muted-foreground);
289
+ cursor: pointer;
290
+ transition:
291
+ background 0.12s ease,
292
+ color 0.12s ease,
293
+ box-shadow 0.12s ease;
294
+ }
295
+ .ez-activity-btn path {
296
+ stroke-width: 1.75;
297
+ }
298
+ .ez-activity-btn:hover {
299
+ background: var(--muted);
300
+ color: var(--foreground);
301
+ }
302
+ .ez-activity-btn[aria-pressed=true] {
303
+ background: var(--panel);
304
+ color: var(--foreground);
305
+ box-shadow:
306
+ inset 0 0 0 1px var(--border),
307
+ 0 0 1px 0 rgb(16 12 12 / 0.06),
308
+ 0 1px 1px 0 rgb(16 12 12 / 0.05);
309
+ }
310
+ .ez-activity-btn[aria-pressed=false][data-working]::after {
311
+ content: "";
312
+ position: absolute;
313
+ top: 5px;
314
+ right: 5px;
315
+ width: 6px;
316
+ height: 6px;
317
+ border-radius: 50%;
318
+ background: oklch(70% 0.16 70);
319
+ box-shadow: 0 0 0 2px var(--background);
320
+ animation: ez-pulse 1.2s ease-in-out infinite;
321
+ }
322
+ .ez-account {
323
+ position: relative;
324
+ margin-top: auto;
325
+ margin-bottom: 8px;
326
+ }
327
+ .ez-avatar {
328
+ display: grid;
329
+ place-items: center;
330
+ width: 22px;
331
+ height: 22px;
332
+ border-radius: 50%;
333
+ background: var(--primary);
334
+ color: var(--primary-foreground);
335
+ font-size: 11px;
336
+ font-weight: 600;
337
+ line-height: 1;
338
+ }
339
+ .ez-account-who {
340
+ display: flex;
341
+ flex-direction: column;
342
+ gap: 1px;
343
+ padding: 6px 8px 8px;
344
+ margin-bottom: 2px;
345
+ border-bottom: 1px solid var(--border);
346
+ }
347
+ .ez-account-label {
348
+ font-size: 11px;
349
+ color: var(--muted-foreground);
350
+ }
351
+ .ez-account-email {
352
+ max-width: 240px;
353
+ overflow: hidden;
354
+ text-overflow: ellipsis;
355
+ white-space: nowrap;
356
+ font-size: 12px;
357
+ font-weight: 500;
358
+ color: var(--foreground);
359
+ }
360
+ .ez-account-menu .ez-menu-item svg {
361
+ color: var(--muted-foreground);
362
+ }
363
+ .ez-resizer {
364
+ position: relative;
365
+ flex-shrink: 0;
366
+ width: 9px;
367
+ margin-inline: -4px -5px;
368
+ z-index: 4;
369
+ cursor: col-resize;
370
+ touch-action: none;
371
+ }
372
+ .ez-resizer::after {
373
+ content: "";
374
+ position: absolute;
375
+ inset-block: 0;
376
+ left: 4px;
377
+ width: 1px;
378
+ background: transparent;
379
+ transition: background 0.12s ease;
380
+ }
381
+ .ez-resizer:hover::after,
382
+ .ez-resizer:focus-visible::after,
383
+ .ez-resizing .ez-resizer::after {
384
+ background: var(--ink-ghost);
385
+ }
386
+ .ez-resizing {
387
+ cursor: col-resize;
388
+ user-select: none;
389
+ }
390
+ .ez-resizing .ez-frame {
391
+ pointer-events: none;
392
+ }
393
+ .ez-side-head {
394
+ padding: 12px 14px;
395
+ border-bottom: 1px solid var(--border);
396
+ flex-shrink: 0;
397
+ }
398
+ .ez-head-row {
399
+ position: relative;
400
+ display: flex;
401
+ align-items: center;
402
+ gap: 6px;
403
+ }
404
+ .ez-logo {
405
+ display: flex;
406
+ position: relative;
407
+ top: -0.8px;
408
+ color: var(--ink);
409
+ }
410
+ .ez-logo > svg {
411
+ height: 16px;
412
+ width: auto;
413
+ }
414
+ .ez-version {
415
+ font-size: 11px;
416
+ color: var(--ink-faint);
417
+ }
418
+ .ez-target {
419
+ display: block;
420
+ font-size: 11.5px;
421
+ line-height: 1.15;
422
+ min-height: 1lh;
423
+ color: var(--muted-foreground);
424
+ margin-top: 3px;
425
+ overflow: hidden;
426
+ text-overflow: ellipsis;
427
+ white-space: nowrap;
428
+ }
429
+ .ez-spacer {
430
+ flex: 1;
431
+ }
432
+ .ez-keys-wrap {
433
+ display: flex;
434
+ }
435
+ .ez-keys {
436
+ display: inline-flex;
437
+ align-items: center;
438
+ padding: 0;
439
+ border: none;
440
+ background: none;
441
+ color: var(--ink-faint);
442
+ cursor: pointer;
443
+ transition: color 0.12s ease;
444
+ }
445
+ .ez-keys:hover,
446
+ .ez-keys:focus-visible {
447
+ color: var(--foreground);
448
+ }
449
+ .ez-keys-panel {
450
+ position: absolute;
451
+ top: calc(100% + 6px);
452
+ right: 0;
453
+ z-index: 5;
454
+ width: max-content;
455
+ display: flex;
456
+ flex-direction: column;
457
+ gap: 6px;
458
+ padding: 10px;
459
+ border-radius: 12px;
460
+ background: var(--panel);
461
+ border: 1px solid var(--border);
462
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
463
+ opacity: 0;
464
+ visibility: hidden;
465
+ transition: opacity 0.12s ease, visibility 0.12s ease;
466
+ }
467
+ .ez-keys-wrap[data-open] .ez-keys-panel,
468
+ .ez-keys:focus-visible + .ez-keys-panel {
469
+ opacity: 1;
470
+ visibility: visible;
471
+ }
472
+ .ez-keys-row {
473
+ display: flex;
474
+ align-items: center;
475
+ gap: 8px;
476
+ }
477
+ .ez-kbd {
478
+ flex-shrink: 0;
479
+ min-width: 26px;
480
+ text-align: center;
481
+ font-family: inherit;
482
+ font-size: 11px;
483
+ font-weight: 600;
484
+ line-height: 1.6;
485
+ color: var(--muted-foreground);
486
+ background: var(--muted);
487
+ border-radius: 5px;
488
+ padding: 1px 6px;
489
+ }
490
+ .ez-keys-label {
491
+ font-size: 12px;
492
+ color: var(--foreground);
493
+ white-space: nowrap;
494
+ }
495
+ .ez-badge {
496
+ display: inline-flex;
497
+ align-items: center;
498
+ gap: 5px;
499
+ font-size: 11px;
500
+ font-weight: 500;
501
+ line-height: 1.5;
502
+ color: var(--muted-foreground);
503
+ background: var(--muted);
504
+ border-radius: 999px;
505
+ padding: 3px 9px;
506
+ white-space: nowrap;
507
+ }
508
+ .ez-badge::before {
509
+ content: "";
510
+ width: 6px;
511
+ height: 6px;
512
+ border-radius: 50%;
513
+ background: var(--ink-ghost);
514
+ flex-shrink: 0;
515
+ }
516
+ .ez-badge.ez-online::before {
517
+ background: oklch(62% 0.15 150);
518
+ }
519
+ .ez-badge.ez-working::before {
520
+ background: oklch(70% 0.16 70);
521
+ animation: ez-pulse 1.2s ease-in-out infinite;
522
+ }
523
+ @keyframes ez-pulse {
524
+ 50% {
525
+ opacity: 0.3;
526
+ }
527
+ }
528
+ .ez-annotate-group {
529
+ display: flex;
530
+ gap: 6px;
531
+ margin-top: 8px;
532
+ }
533
+ .ez-seg {
534
+ display: inline-flex;
535
+ align-items: center;
536
+ gap: 2px;
537
+ background: var(--muted);
538
+ border-radius: var(--radius);
539
+ padding: 2px;
540
+ margin-top: 10px;
541
+ width: fit-content;
542
+ }
543
+ .ez-seg-item {
544
+ display: flex;
545
+ align-items: center;
546
+ gap: 0px;
547
+ border: none;
548
+ background: transparent;
549
+ color: var(--muted-foreground);
550
+ font-family: inherit;
551
+ font-size: 12px;
552
+ border-radius: 6px;
553
+ cursor: pointer;
554
+ white-space: nowrap;
555
+ transition: color 0.12s ease;
556
+ }
557
+ .ez-seg-item:not(.ez-on):hover {
558
+ background: oklch(100% 0 0 / 0.6);
559
+ color: var(--foreground);
560
+ }
561
+ .ez-seg-item.ez-on {
562
+ background: var(--panel);
563
+ color: var(--foreground);
564
+ font-weight: 600;
565
+ box-shadow: 0 1px 2px oklch(14.1% 0.005 285.823 / 0.1);
566
+ }
567
+ .ez-seg-multi {
568
+ padding: 6px 9px;
569
+ }
570
+ .ez-seg-device {
571
+ position: relative;
572
+ padding-right: 0;
573
+ }
574
+ .ez-seg-label {
575
+ border: none;
576
+ background: transparent;
577
+ color: inherit;
578
+ font: inherit;
579
+ padding: 6px 3px 6px 9px;
580
+ border-radius: 6px;
581
+ cursor: pointer;
582
+ }
583
+ .ez-seg-caret {
584
+ border: none;
585
+ background: none;
586
+ position: relative;
587
+ display: flex;
588
+ align-items: center;
589
+ align-self: stretch;
590
+ padding: 0 6px;
591
+ cursor: pointer;
592
+ color: var(--muted-foreground);
593
+ }
594
+ .ez-seg-caret::before {
595
+ content: "";
596
+ position: absolute;
597
+ inset: 3px 2px;
598
+ border-radius: 5px;
599
+ background: transparent;
600
+ transition: background 0.12s ease;
601
+ }
602
+ .ez-seg-caret:hover::before {
603
+ background: var(--muted);
604
+ }
605
+ .ez-seg-caret svg {
606
+ position: relative;
607
+ pointer-events: none;
608
+ }
609
+ .ez-menu {
610
+ position: absolute;
611
+ top: calc(100% + 6px);
612
+ left: 0;
613
+ z-index: 5;
614
+ min-width: 100%;
615
+ width: max-content;
616
+ display: none;
617
+ flex-direction: column;
618
+ gap: 2px;
619
+ padding: 4px;
620
+ border-radius: 10px;
621
+ background: var(--panel);
622
+ border: 1px solid var(--border);
623
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
624
+ }
625
+ .ez-seg-device[data-open] .ez-menu,
626
+ .ez-shown[data-open] .ez-menu,
627
+ .ez-config[data-open] .ez-menu,
628
+ .ez-agent[data-open] .ez-menu,
629
+ .ez-update-hint[data-open] .ez-menu,
630
+ .ez-account[data-open] .ez-menu,
631
+ .ez-canvas-menu-wrap[data-open] .ez-menu {
632
+ display: flex;
633
+ }
634
+ .ez-menu-right {
635
+ left: auto;
636
+ right: 0;
637
+ }
638
+ .ez-menu-up {
639
+ top: auto;
640
+ bottom: calc(100% + 6px);
641
+ max-height: 60vh;
642
+ overflow-y: auto;
643
+ }
644
+ .ez-account-menu {
645
+ top: auto;
646
+ left: auto;
647
+ bottom: 0;
648
+ right: calc(100% + 8px);
649
+ min-width: 200px;
650
+ }
651
+ .ez-menu-group {
652
+ display: flex;
653
+ flex-direction: column;
654
+ gap: 2px;
655
+ }
656
+ .ez-menu-group + .ez-menu-group {
657
+ margin-top: 4px;
658
+ border-top: 1px solid var(--border);
659
+ padding-top: 4px;
660
+ }
661
+ .ez-menu-label {
662
+ padding: 4px 8px 2px;
663
+ font-size: 10px;
664
+ font-weight: 500;
665
+ letter-spacing: 0.04em;
666
+ text-transform: uppercase;
667
+ color: var(--ink-ghost);
668
+ }
669
+ .ez-menu-tick {
670
+ display: flex;
671
+ width: 14px;
672
+ color: #3f9e4d;
673
+ visibility: hidden;
674
+ }
675
+ .ez-menu-tick svg * {
676
+ stroke-width: 3;
677
+ }
678
+ .ez-menu-item.ez-on .ez-menu-tick {
679
+ visibility: visible;
680
+ }
681
+ .ez-menu-item[disabled] {
682
+ cursor: default;
683
+ }
684
+ .ez-menu-item[disabled] .ez-menu-name {
685
+ color: var(--muted-foreground);
686
+ }
687
+ .ez-menu-item {
688
+ display: flex;
689
+ align-items: center;
690
+ gap: 7px;
691
+ border: none;
692
+ background: transparent;
693
+ color: var(--foreground);
694
+ font-family: inherit;
695
+ font-size: 12px;
696
+ font-weight: 500;
697
+ text-align: left;
698
+ padding: 5px 8px;
699
+ border-radius: 6px;
700
+ cursor: pointer;
701
+ }
702
+ .ez-menu-item:hover:not([disabled]),
703
+ .ez-menu-item:focus-visible {
704
+ background: var(--muted);
705
+ }
706
+ .ez-menu-check {
707
+ display: flex;
708
+ flex-shrink: 0;
709
+ margin-left: 12px;
710
+ color: var(--muted-foreground);
711
+ visibility: hidden;
712
+ }
713
+ .ez-menu-item[data-current] .ez-menu-check {
714
+ visibility: visible;
715
+ }
716
+ .ez-menu-name {
717
+ flex: 1;
718
+ }
719
+ .ez-tool-btn {
720
+ flex: 1;
721
+ display: inline-flex;
722
+ align-items: center;
723
+ justify-content: center;
724
+ gap: 6px;
725
+ border: 1px solid var(--border);
726
+ background: var(--panel);
727
+ color: var(--foreground);
728
+ font-size: 12px;
729
+ font-weight: 600;
730
+ padding: 6px 10px;
731
+ border-radius: var(--radius);
732
+ cursor: pointer;
733
+ transition: background 0.12s ease, border-color 0.12s ease;
734
+ }
735
+ .ez-tool-btn:not(.ez-on):hover:not(:disabled) {
736
+ background: var(--muted);
737
+ }
738
+ .ez-tool-btn.ez-on {
739
+ background: var(--primary);
740
+ border-color: var(--primary);
741
+ color: var(--primary-foreground);
742
+ }
743
+ .ez-tool-btn:disabled {
744
+ opacity: 0.45;
745
+ cursor: default;
746
+ }
747
+ .ez-send {
748
+ width: 100%;
749
+ display: inline-flex;
750
+ align-items: center;
751
+ justify-content: center;
752
+ gap: 6px;
753
+ border: 1px solid var(--primary);
754
+ background: var(--primary);
755
+ color: var(--primary-foreground);
756
+ font-size: 13px;
757
+ font-weight: 600;
758
+ padding: 8px;
759
+ border-radius: var(--radius);
760
+ cursor: pointer;
761
+ box-shadow: inset 0 1px 0 0 oklch(100% 0 0 / 0.14);
762
+ transition: opacity 0.12s ease;
763
+ }
764
+ .ez-send:hover:not(:disabled) {
765
+ opacity: 0.88;
766
+ }
767
+ .ez-send:disabled {
768
+ opacity: 0.4;
769
+ cursor: default;
770
+ }
771
+ .ez-notices {
772
+ position: absolute;
773
+ left: 0;
774
+ right: 0;
775
+ bottom: 0;
776
+ z-index: 2;
777
+ }
778
+ .ez-notices > *:not([hidden]) {
779
+ box-shadow: 0 -2px 6px oklch(0% 0 0 / 0.035);
780
+ }
781
+ .ez-notices > *:not([hidden]) ~ *:not([hidden]) {
782
+ box-shadow: none;
783
+ }
784
+ .ez-notices > * {
785
+ animation: ez-rise 0.16s ease-out;
786
+ }
787
+ .ez-resume,
788
+ .ez-confirm {
789
+ animation: none;
790
+ }
791
+ @keyframes ez-rise {
792
+ from {
793
+ opacity: 0;
794
+ transform: translateY(8px);
795
+ }
796
+ 45% {
797
+ opacity: 1;
798
+ }
799
+ to {
800
+ transform: translateY(0);
801
+ }
802
+ }
803
+ @media (prefers-reduced-motion: reduce) {
804
+ .ez-notices > * {
805
+ animation: none;
806
+ }
807
+ }
808
+ .ez-notices > *:not([hidden]) ~ *:not([hidden]) {
809
+ border-top: 1px solid var(--border);
810
+ }
811
+ .ez-status {
812
+ position: absolute;
813
+ top: 5px;
814
+ left: calc((100% - 44px) / 2);
815
+ z-index: 40;
816
+ display: flex;
817
+ align-items: center;
818
+ gap: 8px;
819
+ max-width: calc(100% - 44px - 32px);
820
+ padding: 7px 14px;
821
+ border-radius: 999px;
822
+ background: var(--ink);
823
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 6px 20px oklch(0% 0 0 / 0.3);
824
+ color: #fff;
825
+ font-size: 12px;
826
+ line-height: 1.5;
827
+ white-space: nowrap;
828
+ transform: translateX(-50%);
829
+ animation: ez-toast-in var(--t-view) var(--ease-out) both;
830
+ }
831
+ .ez-status[hidden] {
832
+ display: none;
833
+ }
834
+ .ez-status[data-alert]::before {
835
+ content: "";
836
+ flex-shrink: 0;
837
+ width: 6px;
838
+ height: 6px;
839
+ border-radius: 50%;
840
+ background: oklch(70% 0.16 70);
841
+ }
842
+ .ez-status-title {
843
+ font-weight: 600;
844
+ }
845
+ .ez-status-code {
846
+ padding: 1px 5px;
847
+ border-radius: 4px;
848
+ background: oklch(100% 0 0 / 0.14);
849
+ font-family:
850
+ ui-monospace,
851
+ SFMono-Regular,
852
+ Menlo,
853
+ monospace;
854
+ font-size: 0.92em;
855
+ }
856
+ @media (prefers-reduced-motion: reduce) {
857
+ .ez-status {
858
+ animation-name: ez-fade-in;
859
+ }
860
+ }
861
+ .ez-update {
862
+ position: relative;
863
+ padding: 12px 14px;
864
+ border-top: 1px solid var(--border);
865
+ background: var(--muted);
866
+ font-size: 12.5px;
867
+ line-height: 1.5;
868
+ flex-shrink: 0;
869
+ }
870
+ .ez-update-title {
871
+ font-weight: 600;
872
+ font-size: 13px;
873
+ }
874
+ .ez-update-lines {
875
+ margin: 6px 0 0;
876
+ padding: 0;
877
+ list-style: none;
878
+ color: var(--muted-foreground);
879
+ display: flex;
880
+ flex-direction: column;
881
+ gap: 2px;
882
+ word-break: break-all;
883
+ }
884
+ .ez-update-error {
885
+ color: oklch(45% 0.15 25);
886
+ font-family:
887
+ ui-monospace,
888
+ SFMono-Regular,
889
+ Menlo,
890
+ monospace;
891
+ font-size: 11.5px;
892
+ }
893
+ .ez-update-actions {
894
+ display: flex;
895
+ align-items: center;
896
+ gap: 8px;
897
+ margin-top: 10px;
898
+ }
899
+ .ez-update-go {
900
+ border: 1px solid var(--primary);
901
+ background: var(--primary);
902
+ color: var(--primary-foreground);
903
+ font-size: 12px;
904
+ font-weight: 600;
905
+ padding: 5px 12px;
906
+ border-radius: 6px;
907
+ cursor: pointer;
908
+ box-shadow: inset 0 1px 0 0 oklch(100% 0 0 / 0.14);
909
+ }
910
+ .ez-update-go:hover:not(:disabled) {
911
+ opacity: 0.88;
912
+ }
913
+ .ez-update-go:disabled {
914
+ opacity: 0.4;
915
+ cursor: default;
916
+ }
917
+ .ez-update-label {
918
+ display: inline-block;
919
+ transform: translateY(-1px);
920
+ }
921
+ .ez-update-x {
922
+ position: absolute;
923
+ top: 6px;
924
+ right: 6px;
925
+ display: inline-flex;
926
+ align-items: center;
927
+ justify-content: center;
928
+ padding: 6px;
929
+ border: none;
930
+ background: none;
931
+ color: var(--ink-ghost);
932
+ cursor: pointer;
933
+ }
934
+ .ez-update-x:hover {
935
+ color: var(--foreground);
936
+ }
937
+ .ez-update-hint {
938
+ position: relative;
939
+ display: flex;
940
+ }
941
+ .ez-update-flag {
942
+ display: inline-flex;
943
+ align-items: center;
944
+ border: none;
945
+ background: none;
946
+ padding: 0;
947
+ font-size: 11px;
948
+ font-weight: 500;
949
+ white-space: nowrap;
950
+ color: var(--update-ink);
951
+ cursor: pointer;
952
+ }
953
+ .ez-update-flag:hover {
954
+ color: color-mix(in oklab, var(--update-ink) 82%, var(--ink));
955
+ text-decoration: underline;
956
+ text-underline-offset: 2px;
957
+ }
958
+ .ez-update-hint[hidden],
959
+ .ez-config[hidden],
960
+ .ez-update[hidden] {
961
+ display: none;
962
+ }
963
+ .ez-section {
964
+ padding: 14px;
965
+ padding-block: 8px;
966
+ display: flex;
967
+ flex-direction: column;
968
+ min-height: 0;
969
+ }
970
+ .ez-conv-section {
971
+ flex: 1;
972
+ padding-block: 0;
973
+ border-bottom: 1px solid var(--border);
974
+ position: relative;
975
+ }
976
+ .ez-conv {
977
+ overflow-y: auto;
978
+ flex: 1;
979
+ display: flex;
980
+ flex-direction: column;
981
+ gap: 10px;
982
+ padding-block: 18px;
983
+ padding-right: 2px;
984
+ }
985
+ .ez-conv:empty::after {
986
+ content: "\60f3\8abf\6574\4ec0\9ebc \1f3a8";
987
+ font-size: 12px;
988
+ color: var(--muted-foreground);
989
+ line-height: 1.6;
990
+ }
991
+ .ez-msg {
992
+ display: flex;
993
+ }
994
+ .ez-msg-user {
995
+ justify-content: flex-end;
996
+ }
997
+ .ez-msg-user.ez-msg-cont {
998
+ margin-top: -6px;
999
+ }
1000
+ .ez-msg-agent:not(:first-child),
1001
+ .ez-msg-agent + .ez-msg-user {
1002
+ margin-top: 10px;
1003
+ }
1004
+ .ez-msg-agent.ez-msg-cont {
1005
+ margin-top: 16px;
1006
+ }
1007
+ .ez-bubble {
1008
+ --bubble-pad-x: 10px;
1009
+ --bubble-pad-y: 8px;
1010
+ max-width: 84%;
1011
+ min-width: 0;
1012
+ font-size: 13px;
1013
+ line-height: 1.6;
1014
+ padding: var(--bubble-pad-y) var(--bubble-pad-x);
1015
+ border-radius: 12px;
1016
+ word-break: break-word;
1017
+ white-space: pre-wrap;
1018
+ background: var(--muted);
1019
+ }
1020
+ .ez-said {
1021
+ min-width: 0;
1022
+ font-size: 13px;
1023
+ line-height: 1.6;
1024
+ word-break: break-word;
1025
+ white-space: pre-wrap;
1026
+ }
1027
+ .ez-bubble-list {
1028
+ list-style: none;
1029
+ margin: 0;
1030
+ padding: 0;
1031
+ display: flex;
1032
+ flex-direction: column;
1033
+ gap: 6px;
1034
+ }
1035
+ .ez-bubble-item {
1036
+ display: flex;
1037
+ align-items: baseline;
1038
+ gap: 6px;
1039
+ }
1040
+ .ez-bi-num {
1041
+ flex-shrink: 0;
1042
+ font-size: 11.5px;
1043
+ font-variant-numeric: tabular-nums;
1044
+ opacity: 0.5;
1045
+ }
1046
+ .ez-bi-body {
1047
+ min-width: 0;
1048
+ }
1049
+ .ez-bubble-note {
1050
+ margin: 6px calc(var(--bubble-pad-x, 0px) * -1) calc(var(--bubble-pad-y, 0px) * -1);
1051
+ padding: 6px var(--bubble-pad-x, 0px);
1052
+ border-top: 1px solid color-mix(in oklab, var(--border) 80%, var(--ink-ghost));
1053
+ }
1054
+ .ez-bubble-more {
1055
+ display: block;
1056
+ width: 100%;
1057
+ text-align: left;
1058
+ border: none;
1059
+ margin-top: 7px;
1060
+ background: transparent;
1061
+ color: inherit;
1062
+ opacity: 0.45;
1063
+ font-size: 11.5px;
1064
+ cursor: pointer;
1065
+ padding-left: 0;
1066
+ padding-right: 0;
1067
+ }
1068
+ .ez-bubble-more:hover {
1069
+ opacity: 0.75;
1070
+ }
1071
+ .ez-thinking {
1072
+ --ez-progress-line: 17px;
1073
+ --ez-progress-pad: 2px;
1074
+ display: flex;
1075
+ align-items: center;
1076
+ gap: 3px;
1077
+ padding: var(--ez-progress-pad) 0;
1078
+ min-height: calc(var(--ez-progress-line) + var(--ez-progress-pad) * 2);
1079
+ min-width: 0;
1080
+ }
1081
+ .ez-progress {
1082
+ margin-left: 6px;
1083
+ min-width: 0;
1084
+ font-size: 12px;
1085
+ line-height: var(--ez-progress-line);
1086
+ color: var(--muted-foreground);
1087
+ white-space: nowrap;
1088
+ overflow: hidden;
1089
+ text-overflow: ellipsis;
1090
+ }
1091
+ .ez-dot {
1092
+ flex: none;
1093
+ width: 4px;
1094
+ height: 4px;
1095
+ border-radius: 50%;
1096
+ background: var(--ink-ghost);
1097
+ animation: ez-think 1.1s ease-in-out infinite;
1098
+ }
1099
+ .ez-dot:nth-child(2) {
1100
+ animation-delay: 0.16s;
1101
+ }
1102
+ .ez-dot:nth-child(3) {
1103
+ animation-delay: 0.32s;
1104
+ }
1105
+ @keyframes ez-think {
1106
+ 0%, 70%, 100% {
1107
+ opacity: 0.28;
1108
+ transform: translateY(0);
1109
+ }
1110
+ 35% {
1111
+ opacity: 1;
1112
+ transform: translateY(-2.5px);
1113
+ }
1114
+ }
1115
+ @media (prefers-reduced-motion: reduce) {
1116
+ .ez-dot {
1117
+ animation: none;
1118
+ opacity: 0.55;
1119
+ }
1120
+ }
1121
+ .ez-msg-system {
1122
+ display: flex;
1123
+ align-items: center;
1124
+ gap: 8px;
1125
+ font-size: 11.5px;
1126
+ color: var(--muted-foreground);
1127
+ padding: 2px 0;
1128
+ }
1129
+ .ez-msg-system::before,
1130
+ .ez-msg-system::after {
1131
+ content: "";
1132
+ flex: 1 1 auto;
1133
+ min-width: 12px;
1134
+ border-top: 1px dashed var(--border);
1135
+ }
1136
+ .ez-msg-system-plain {
1137
+ display: block;
1138
+ text-align: center;
1139
+ white-space: pre-wrap;
1140
+ }
1141
+ .ez-msg-system-plain::before,
1142
+ .ez-msg-system-plain::after {
1143
+ content: none;
1144
+ }
1145
+ .ez-queue-section {
1146
+ flex-shrink: 0;
1147
+ }
1148
+ .ez-fade {
1149
+ position: relative;
1150
+ min-height: 0;
1151
+ }
1152
+ .ez-fade::before,
1153
+ .ez-fade::after {
1154
+ content: "";
1155
+ position: absolute;
1156
+ left: 0;
1157
+ right: 0;
1158
+ height: 22px;
1159
+ pointer-events: none;
1160
+ opacity: 0;
1161
+ transition: opacity 0.15s ease;
1162
+ z-index: 1;
1163
+ }
1164
+ .ez-fade::before {
1165
+ top: 0;
1166
+ background:
1167
+ linear-gradient(
1168
+ to bottom,
1169
+ var(--background),
1170
+ transparent);
1171
+ }
1172
+ .ez-fade::after {
1173
+ bottom: 0;
1174
+ background:
1175
+ linear-gradient(
1176
+ to top,
1177
+ var(--background),
1178
+ transparent);
1179
+ }
1180
+ .ez-fade[data-more-above]::before,
1181
+ .ez-fade[data-more-below]::after {
1182
+ opacity: 1;
1183
+ }
1184
+ .ez-conv-scroll {
1185
+ flex: 1;
1186
+ display: flex;
1187
+ flex-direction: column;
1188
+ }
1189
+ .ez-queue-scroll {
1190
+ display: none;
1191
+ margin-bottom: 10px;
1192
+ }
1193
+ .ez-queue-scroll[data-filled] {
1194
+ display: block;
1195
+ }
1196
+ .ez-queue {
1197
+ list-style: none;
1198
+ margin: 0;
1199
+ padding: 0;
1200
+ overflow-y: auto;
1201
+ display: flex;
1202
+ flex-direction: column;
1203
+ gap: 6px;
1204
+ }
1205
+ .ez-queue-item {
1206
+ border-radius: 12px;
1207
+ padding: 9px 11px;
1208
+ background: var(--muted);
1209
+ }
1210
+ .ez-qi-head {
1211
+ display: flex;
1212
+ align-items: center;
1213
+ gap: 6px;
1214
+ min-width: 0;
1215
+ }
1216
+ .ez-qi-num {
1217
+ width: 18px;
1218
+ height: 18px;
1219
+ border-radius: 50%;
1220
+ background: var(--mark);
1221
+ color: var(--mark-foreground);
1222
+ font-size: 11px;
1223
+ font-weight: 650;
1224
+ line-height: 18px;
1225
+ text-align: center;
1226
+ flex-shrink: 0;
1227
+ }
1228
+ .ez-qi-label {
1229
+ font-size: 11px;
1230
+ color: var(--muted-foreground);
1231
+ overflow: hidden;
1232
+ text-overflow: ellipsis;
1233
+ white-space: nowrap;
1234
+ flex: 1;
1235
+ min-width: 0;
1236
+ }
1237
+ .ez-qi-vp {
1238
+ font-size: 10px;
1239
+ font-variant-numeric: tabular-nums;
1240
+ background: var(--paper-edge);
1241
+ color: var(--muted-foreground);
1242
+ border-radius: 999px;
1243
+ padding: 2px 8px;
1244
+ flex-shrink: 0;
1245
+ }
1246
+ .ez-qi-acts {
1247
+ display: flex;
1248
+ align-items: center;
1249
+ gap: 0;
1250
+ flex-shrink: 0;
1251
+ transform: translateX(1px);
1252
+ }
1253
+ .ez-qi-act {
1254
+ display: inline-flex;
1255
+ align-items: center;
1256
+ justify-content: center;
1257
+ width: 16px;
1258
+ height: 16px;
1259
+ padding: 0;
1260
+ border: none;
1261
+ background: transparent;
1262
+ color: var(--ink-faint);
1263
+ cursor: pointer;
1264
+ flex-shrink: 0;
1265
+ border-radius: 4px;
1266
+ }
1267
+ .ez-qi-act:hover:not(:disabled) {
1268
+ color: var(--foreground);
1269
+ }
1270
+ .ez-qi-edit svg {
1271
+ transform: translateY(-1px);
1272
+ }
1273
+ .ez-qi-tick svg {
1274
+ transform: translateY(0.3px);
1275
+ }
1276
+ .ez-qi-act:disabled {
1277
+ opacity: 0.4;
1278
+ cursor: default;
1279
+ }
1280
+ .ez-qi-act.ez-qi-del:hover:not(:disabled) {
1281
+ color: var(--danger);
1282
+ }
1283
+ .ez-qi-comment {
1284
+ font-size: 13px;
1285
+ margin-top: 4px;
1286
+ line-height: 1.55;
1287
+ word-break: break-word;
1288
+ }
1289
+ .ez-queue-item[data-editing] .ez-attach {
1290
+ margin: 6px 0 0;
1291
+ }
1292
+ .ez-qi-input {
1293
+ display: block;
1294
+ position: relative;
1295
+ min-height: 34px;
1296
+ max-height: 34vh;
1297
+ overflow-y: auto;
1298
+ font-family: inherit;
1299
+ font-size: 13px;
1300
+ font-weight: 400;
1301
+ line-height: 1.5;
1302
+ color: var(--foreground);
1303
+ white-space: pre-wrap;
1304
+ word-break: break-word;
1305
+ outline: none;
1306
+ }
1307
+ .ez-qi-input[data-empty]::before {
1308
+ content: attr(data-placeholder);
1309
+ position: absolute;
1310
+ inset: 0 0 auto 0;
1311
+ color: var(--ink-faint);
1312
+ pointer-events: none;
1313
+ }
1314
+ .ez-attach {
1315
+ margin-bottom: 8px;
1316
+ }
1317
+ .ez-attach-field {
1318
+ border: 1px solid var(--border);
1319
+ border-radius: var(--radius);
1320
+ padding: 7px 9px;
1321
+ background: var(--panel);
1322
+ transition: border-color 0.12s ease, background 0.12s ease;
1323
+ }
1324
+ .ez-attach-field[data-drop] {
1325
+ background: var(--paper-sunken);
1326
+ }
1327
+ .ez-control-row {
1328
+ position: relative;
1329
+ display: flex;
1330
+ align-items: center;
1331
+ gap: 8px;
1332
+ margin-bottom: 6px;
1333
+ padding-left: 2px;
1334
+ }
1335
+ .ez-control-row[hidden] {
1336
+ display: none;
1337
+ }
1338
+ .ez-agent .ez-menu,
1339
+ .ez-config .ez-menu {
1340
+ left: 0;
1341
+ right: auto;
1342
+ min-width: 0;
1343
+ max-width: 100%;
1344
+ }
1345
+ .ez-agent .ez-menu-name,
1346
+ .ez-config .ez-menu-name {
1347
+ overflow: hidden;
1348
+ text-overflow: ellipsis;
1349
+ white-space: nowrap;
1350
+ }
1351
+ .ez-agent {
1352
+ position: static;
1353
+ display: flex;
1354
+ min-width: 0;
1355
+ }
1356
+ .ez-agent[hidden] {
1357
+ display: none;
1358
+ }
1359
+ .ez-agent-pill,
1360
+ .ez-config-pill {
1361
+ display: inline-flex;
1362
+ align-items: center;
1363
+ gap: 4px;
1364
+ max-width: 100%;
1365
+ border: none;
1366
+ background: none;
1367
+ color: var(--ink-faint);
1368
+ font-family: inherit;
1369
+ font-size: 11px;
1370
+ font-weight: 600;
1371
+ padding: 0;
1372
+ border-radius: 4px;
1373
+ cursor: pointer;
1374
+ transition: color 0.12s ease;
1375
+ }
1376
+ .ez-brand-mark {
1377
+ display: flex;
1378
+ flex-shrink: 0;
1379
+ transform: translateY(var(--brand-nudge, 0));
1380
+ }
1381
+ .ez-agent-pill {
1382
+ --brand-nudge: 1px;
1383
+ }
1384
+ .ez-agent-pill > svg,
1385
+ .ez-config-pill > svg {
1386
+ flex-shrink: 0;
1387
+ margin-left: -2px;
1388
+ margin-top: 3px;
1389
+ }
1390
+ .ez-agent-pill:hover:not(:disabled),
1391
+ .ez-config-pill:hover:not(:disabled),
1392
+ .ez-agent[data-open] .ez-agent-pill,
1393
+ .ez-config[data-open] .ez-config-pill {
1394
+ color: var(--ink-muted);
1395
+ }
1396
+ .ez-harness-row {
1397
+ display: flex;
1398
+ align-items: center;
1399
+ min-height: 17px;
1400
+ margin-bottom: 6px;
1401
+ padding-left: 2px;
1402
+ }
1403
+ .ez-harness-row[hidden] {
1404
+ display: none;
1405
+ }
1406
+ .ez-harness {
1407
+ display: inline-flex;
1408
+ align-items: center;
1409
+ gap: 4px;
1410
+ padding: 0;
1411
+ border: none;
1412
+ border-radius: 4px;
1413
+ background: none;
1414
+ color: var(--ink-faint);
1415
+ font-family: inherit;
1416
+ font-size: 11px;
1417
+ font-weight: 600;
1418
+ line-height: 13px;
1419
+ cursor: pointer;
1420
+ transition: color 0.12s ease;
1421
+ }
1422
+ .ez-harness:hover:not(:disabled) {
1423
+ color: var(--ink-muted);
1424
+ }
1425
+ .ez-harness:disabled {
1426
+ cursor: default;
1427
+ opacity: 0.5;
1428
+ }
1429
+ .ez-harness-mark {
1430
+ display: flex;
1431
+ flex-shrink: 0;
1432
+ color: var(--premium);
1433
+ }
1434
+ .ez-harness-mark path {
1435
+ fill: currentColor;
1436
+ }
1437
+ .ez-harness-label {
1438
+ white-space: nowrap;
1439
+ }
1440
+ .ez-harness-tag {
1441
+ margin-left: 2px;
1442
+ padding: 2px 6px;
1443
+ border-radius: 4px;
1444
+ background: var(--paper-edge);
1445
+ color: var(--ink-muted);
1446
+ font-size: 10px;
1447
+ font-weight: 500;
1448
+ line-height: 13px;
1449
+ white-space: nowrap;
1450
+ }
1451
+ .ez-effort {
1452
+ display: inline-flex;
1453
+ align-items: center;
1454
+ gap: 6px;
1455
+ margin-left: auto;
1456
+ cursor: pointer;
1457
+ }
1458
+ .ez-effort[hidden] {
1459
+ display: none;
1460
+ }
1461
+ .ez-effort-label {
1462
+ color: var(--ink-faint);
1463
+ font-size: 11px;
1464
+ font-weight: 600;
1465
+ line-height: 13px;
1466
+ white-space: nowrap;
1467
+ }
1468
+ .ez-effort-value {
1469
+ min-width: 11px;
1470
+ color: var(--ink-muted);
1471
+ font-size: 11px;
1472
+ font-weight: 600;
1473
+ line-height: 13px;
1474
+ white-space: nowrap;
1475
+ }
1476
+ .ez-effort-slider {
1477
+ --at: 0.5;
1478
+ --span: 45px;
1479
+ position: relative;
1480
+ width: 56px;
1481
+ height: 11px;
1482
+ flex-shrink: 0;
1483
+ }
1484
+ .ez-effort-track {
1485
+ position: absolute;
1486
+ top: 50%;
1487
+ left: 3px;
1488
+ width: calc(var(--span) + 5px);
1489
+ height: 4px;
1490
+ border-radius: 2px;
1491
+ background: #d8d3c8;
1492
+ transform: translateY(-50%);
1493
+ }
1494
+ .ez-effort-fill {
1495
+ position: absolute;
1496
+ inset: 0 auto 0 0;
1497
+ width: calc(2.5px + var(--span) * var(--at));
1498
+ border-radius: 2px 0 0 2px;
1499
+ background: var(--ink);
1500
+ }
1501
+ .ez-effort-thumb {
1502
+ position: absolute;
1503
+ top: 50%;
1504
+ left: calc(2.5px + var(--span) * var(--at));
1505
+ width: 11px;
1506
+ height: 11px;
1507
+ border-radius: 50%;
1508
+ background: #fff;
1509
+ box-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.18);
1510
+ transform: translate(-50%, -50%);
1511
+ }
1512
+ .ez-effort-input {
1513
+ position: absolute;
1514
+ inset: 0;
1515
+ width: 100%;
1516
+ height: 100%;
1517
+ margin: 0;
1518
+ opacity: 0;
1519
+ cursor: pointer;
1520
+ }
1521
+ .ez-effort-input:disabled {
1522
+ cursor: default;
1523
+ }
1524
+ .ez-effort-slider:has(.ez-effort-input:disabled) {
1525
+ opacity: 0.5;
1526
+ }
1527
+ .ez-effort-slider:has(.ez-effort-input:focus-visible) .ez-effort-thumb {
1528
+ outline: 2px solid var(--ring, var(--ink));
1529
+ outline-offset: 1px;
1530
+ }
1531
+ .ez-switch {
1532
+ position: relative;
1533
+ flex-shrink: 0;
1534
+ width: 24px;
1535
+ height: 13px;
1536
+ margin-left: 2px;
1537
+ border-radius: 999px;
1538
+ background: #b6b1a5;
1539
+ transition: background-color 0.15s ease, box-shadow 0.15s ease;
1540
+ }
1541
+ .ez-switch::after {
1542
+ content: "";
1543
+ position: absolute;
1544
+ top: 2px;
1545
+ left: 2px;
1546
+ width: 9px;
1547
+ height: 9px;
1548
+ border-radius: 50%;
1549
+ background: #fff;
1550
+ box-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.1), 0 1px 1.5px rgba(0, 0, 0, 0.14);
1551
+ transition: transform 0.15s ease;
1552
+ }
1553
+ .ez-harness[aria-checked=true] .ez-switch {
1554
+ background: var(--ink);
1555
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12);
1556
+ }
1557
+ .ez-harness[aria-checked=true] .ez-switch::after {
1558
+ transform: translateX(11px);
1559
+ }
1560
+ @media (prefers-reduced-motion: reduce) {
1561
+ .ez-harness,
1562
+ .ez-switch,
1563
+ .ez-switch::after {
1564
+ transition: none;
1565
+ }
1566
+ }
1567
+ .ez-usage {
1568
+ position: relative;
1569
+ margin-left: auto;
1570
+ flex-shrink: 0;
1571
+ display: flex;
1572
+ }
1573
+ .ez-usage[hidden] {
1574
+ display: none;
1575
+ }
1576
+ .ez-limit {
1577
+ appearance: none;
1578
+ padding: 0;
1579
+ border: 0;
1580
+ background: none;
1581
+ cursor: pointer;
1582
+ color: var(--ink-faint);
1583
+ font: inherit;
1584
+ font-size: 11px;
1585
+ font-weight: 600;
1586
+ font-variant-numeric: tabular-nums;
1587
+ white-space: nowrap;
1588
+ transform: translateY(1px);
1589
+ transition: color 0.12s ease;
1590
+ }
1591
+ .ez-usage:hover .ez-limit,
1592
+ .ez-limit:focus-visible {
1593
+ color: var(--ink-muted);
1594
+ }
1595
+ .ez-usage-card {
1596
+ position: absolute;
1597
+ bottom: calc(100% + 8px);
1598
+ right: 0;
1599
+ z-index: 5;
1600
+ width: max-content;
1601
+ min-width: 208px;
1602
+ padding: 10px 12px 11px;
1603
+ border-radius: 10px;
1604
+ background: var(--panel);
1605
+ border: 1px solid var(--border);
1606
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
1607
+ opacity: 0;
1608
+ visibility: hidden;
1609
+ transform: translateY(3px);
1610
+ transition:
1611
+ opacity 0.12s ease,
1612
+ transform 0.12s ease,
1613
+ visibility 0s linear 0.12s;
1614
+ }
1615
+ .ez-usage:hover .ez-usage-card,
1616
+ .ez-usage:focus-within .ez-usage-card {
1617
+ opacity: 1;
1618
+ visibility: visible;
1619
+ transform: translateY(0);
1620
+ transition:
1621
+ opacity 0.12s ease 0.22s,
1622
+ transform 0.12s ease 0.22s,
1623
+ visibility 0s linear 0.22s;
1624
+ }
1625
+ .ez-usage-head {
1626
+ display: flex;
1627
+ align-items: baseline;
1628
+ justify-content: space-between;
1629
+ gap: 12px;
1630
+ margin-bottom: 9px;
1631
+ }
1632
+ .ez-usage-title {
1633
+ font-size: 11px;
1634
+ font-weight: 500;
1635
+ color: var(--ink);
1636
+ }
1637
+ .ez-usage-plan {
1638
+ font-size: 10.5px;
1639
+ font-weight: 600;
1640
+ color: var(--ink-faint);
1641
+ }
1642
+ .ez-usage-row + .ez-usage-row {
1643
+ margin-top: 9px;
1644
+ }
1645
+ .ez-usage-line {
1646
+ display: flex;
1647
+ align-items: baseline;
1648
+ justify-content: space-between;
1649
+ gap: 16px;
1650
+ font-size: 11.5px;
1651
+ line-height: 1.4;
1652
+ }
1653
+ .ez-usage-label {
1654
+ color: var(--ink-muted);
1655
+ }
1656
+ .ez-usage-left {
1657
+ color: var(--ink);
1658
+ font-weight: 600;
1659
+ font-variant-numeric: tabular-nums;
1660
+ }
1661
+ .ez-usage-bar {
1662
+ margin-top: 5px;
1663
+ height: 4px;
1664
+ border-radius: 999px;
1665
+ background: var(--border);
1666
+ overflow: hidden;
1667
+ }
1668
+ .ez-usage-bar i {
1669
+ display: block;
1670
+ height: 100%;
1671
+ border-radius: inherit;
1672
+ background: var(--ink-muted);
1673
+ }
1674
+ .ez-usage-row[data-low] .ez-usage-bar i {
1675
+ background: var(--mark);
1676
+ }
1677
+ .ez-usage-row[data-low] .ez-usage-left {
1678
+ color: var(--mark);
1679
+ }
1680
+ .ez-usage-when {
1681
+ margin-top: 3px;
1682
+ font-size: 10.5px;
1683
+ color: var(--ink-faint);
1684
+ font-variant-numeric: tabular-nums;
1685
+ }
1686
+ @media (prefers-reduced-motion: reduce) {
1687
+ .ez-usage-card {
1688
+ transform: none;
1689
+ }
1690
+ }
1691
+ .ez-agent-name {
1692
+ overflow: hidden;
1693
+ text-overflow: ellipsis;
1694
+ white-space: nowrap;
1695
+ transform: translateY(1px);
1696
+ }
1697
+ .ez-config {
1698
+ display: flex;
1699
+ position: static;
1700
+ }
1701
+ .ez-agent-pill:disabled,
1702
+ .ez-config-pill:disabled {
1703
+ cursor: default;
1704
+ opacity: 0.5;
1705
+ }
1706
+ .ez-config-name {
1707
+ overflow: hidden;
1708
+ text-overflow: ellipsis;
1709
+ white-space: nowrap;
1710
+ transform: translateY(1px);
1711
+ }
1712
+ .ez-note {
1713
+ display: block;
1714
+ position: relative;
1715
+ min-height: 40px;
1716
+ max-height: 160px;
1717
+ overflow-y: auto;
1718
+ font-family: inherit;
1719
+ font-size: 13px;
1720
+ font-weight: 400;
1721
+ line-height: 1.5;
1722
+ color: var(--foreground);
1723
+ white-space: pre-wrap;
1724
+ word-break: break-word;
1725
+ outline: none;
1726
+ }
1727
+ .ez-note[data-empty]::before {
1728
+ content: attr(data-placeholder);
1729
+ position: absolute;
1730
+ inset: 0 0 auto 0;
1731
+ color: var(--ink-ghost);
1732
+ pointer-events: none;
1733
+ }
1734
+ .ez-attach-field:focus-within {
1735
+ border-color: var(--ring);
1736
+ outline: 3px solid var(--ring-halo);
1737
+ outline-offset: 0;
1738
+ }
1739
+ .ez-chip {
1740
+ display: inline-flex;
1741
+ align-items: center;
1742
+ gap: 3px;
1743
+ max-width: 180px;
1744
+ vertical-align: baseline;
1745
+ padding: 1px 6px;
1746
+ border-radius: 4px;
1747
+ background: var(--attach);
1748
+ font-size: 11px;
1749
+ font-weight: 500;
1750
+ line-height: 1.55;
1751
+ color: var(--attach-ink);
1752
+ white-space: nowrap;
1753
+ user-select: none;
1754
+ }
1755
+ .ez-chip-name {
1756
+ overflow: hidden;
1757
+ text-overflow: ellipsis;
1758
+ min-width: 0;
1759
+ }
1760
+ .ez-chip svg {
1761
+ flex-shrink: 0;
1762
+ }
1763
+ .ez-chip-ref {
1764
+ background: var(--ref);
1765
+ color: var(--ref-ink);
1766
+ }
1767
+ .ez-chip-ref.ez-chip-chosen svg {
1768
+ color: var(--explore-accent);
1769
+ }
1770
+ .ez-chip-skill {
1771
+ display: inline;
1772
+ max-width: none;
1773
+ padding: 0;
1774
+ border-radius: 0;
1775
+ background: none;
1776
+ color: var(--skill-ink);
1777
+ font-family:
1778
+ ui-monospace,
1779
+ SFMono-Regular,
1780
+ Menlo,
1781
+ monospace;
1782
+ font-size: 0.92em;
1783
+ font-weight: 400;
1784
+ }
1785
+ .ez-chip-pending {
1786
+ opacity: 0.55;
1787
+ }
1788
+ .ez-file-chips {
1789
+ display: flex;
1790
+ flex-wrap: wrap;
1791
+ gap: 4px;
1792
+ margin-top: 4px;
1793
+ }
1794
+ .ez-attach-error {
1795
+ margin-top: 4px;
1796
+ font-size: 11px;
1797
+ line-height: 1.5;
1798
+ color: oklch(52% 0.2 25);
1799
+ }
1800
+ .ez-slash-menu {
1801
+ position: fixed;
1802
+ z-index: 20;
1803
+ min-width: 240px;
1804
+ max-width: 300px;
1805
+ padding: 4px 4px 5px;
1806
+ border-radius: 10px;
1807
+ background: var(--panel);
1808
+ border: 1px solid var(--border);
1809
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
1810
+ }
1811
+ .ez-slash-head {
1812
+ padding: 7px 10px 5px;
1813
+ font-size: 11px;
1814
+ font-weight: 500;
1815
+ line-height: 1.4;
1816
+ color: var(--ink-faint);
1817
+ }
1818
+ .ez-slash-item {
1819
+ display: flex;
1820
+ align-items: center;
1821
+ gap: 6px;
1822
+ padding: 6px 10px;
1823
+ border-radius: 6px;
1824
+ cursor: pointer;
1825
+ color: var(--foreground);
1826
+ }
1827
+ .ez-slash-item[data-active] {
1828
+ background: var(--muted);
1829
+ }
1830
+ .ez-slash-item svg {
1831
+ flex-shrink: 0;
1832
+ color: var(--ink-muted);
1833
+ }
1834
+ .ez-slash-label {
1835
+ font-size: 13px;
1836
+ line-height: 1;
1837
+ white-space: nowrap;
1838
+ }
1839
+ .ez-slash-hint {
1840
+ margin-left: auto;
1841
+ padding-left: 14px;
1842
+ min-width: 0;
1843
+ overflow: hidden;
1844
+ text-overflow: ellipsis;
1845
+ white-space: nowrap;
1846
+ font-size: 12px;
1847
+ color: var(--ink-faint);
1848
+ }
1849
+ .ez-acp-feed {
1850
+ width: 100%;
1851
+ display: flex;
1852
+ flex-direction: column;
1853
+ gap: 3px;
1854
+ font-size: 12px;
1855
+ min-width: 0;
1856
+ }
1857
+ .ez-acp-plan,
1858
+ .ez-acp-tool {
1859
+ display: flex;
1860
+ align-items: baseline;
1861
+ gap: 7px;
1862
+ color: var(--muted-foreground);
1863
+ min-width: 0;
1864
+ }
1865
+ .ez-acp-text {
1866
+ min-width: 0;
1867
+ overflow: hidden;
1868
+ text-overflow: ellipsis;
1869
+ white-space: nowrap;
1870
+ }
1871
+ .ez-acp-tick {
1872
+ flex: none;
1873
+ width: 10px;
1874
+ text-align: center;
1875
+ }
1876
+ .ez-acp-tick::before {
1877
+ content: "\25cb";
1878
+ color: var(--ink-ghost);
1879
+ font-size: 10px;
1880
+ }
1881
+ .ez-acp-plan-in_progress .ez-acp-tick::before {
1882
+ content: "\25d0";
1883
+ color: var(--ink-muted);
1884
+ }
1885
+ .ez-acp-plan-completed {
1886
+ color: var(--ink-ghost);
1887
+ }
1888
+ .ez-acp-plan-completed .ez-acp-tick::before {
1889
+ content: "\25cf";
1890
+ }
1891
+ .ez-acp-dot {
1892
+ flex: none;
1893
+ width: 12px;
1894
+ text-align: center;
1895
+ font-size: 10px;
1896
+ color: var(--ink-ghost);
1897
+ }
1898
+ .ez-acp-dot::before {
1899
+ content: "\2713";
1900
+ }
1901
+ .ez-acp-tool-pending .ez-acp-dot::before,
1902
+ .ez-acp-tool-in_progress .ez-acp-dot::before {
1903
+ content: "\25cf";
1904
+ font-size: 7px;
1905
+ color: var(--ink-muted);
1906
+ animation: ez-think 1.1s ease-in-out infinite;
1907
+ display: inline-block;
1908
+ }
1909
+ .ez-acp-tool-pending .ez-acp-text,
1910
+ .ez-acp-tool-in_progress .ez-acp-text {
1911
+ color: var(--foreground);
1912
+ }
1913
+ .ez-acp-tool-failed .ez-acp-dot {
1914
+ color: var(--mark);
1915
+ }
1916
+ .ez-acp-tool-failed .ez-acp-dot::before {
1917
+ content: "\2715";
1918
+ }
1919
+ .ez-acp-thought {
1920
+ color: var(--ink-faint);
1921
+ font-style: italic;
1922
+ overflow: hidden;
1923
+ display: -webkit-box;
1924
+ -webkit-line-clamp: 2;
1925
+ -webkit-box-orient: vertical;
1926
+ }
1927
+ .ez-acp-say {
1928
+ margin: 8px 0;
1929
+ }
1930
+ .ez-acp-say:first-child {
1931
+ margin-top: 0;
1932
+ }
1933
+ .ez-acp-say:last-child {
1934
+ margin-bottom: 0;
1935
+ }
1936
+ .ez-acp-feed:not(:empty) + .ez-thinking {
1937
+ margin-top: 12px;
1938
+ }
1939
+ .ez-md {
1940
+ font-size: 12.5px;
1941
+ line-height: 1.55;
1942
+ overflow-wrap: anywhere;
1943
+ min-width: 0;
1944
+ }
1945
+ .ez-md > :first-child {
1946
+ margin-top: 0;
1947
+ }
1948
+ .ez-md > :last-child {
1949
+ margin-bottom: 0;
1950
+ }
1951
+ .ez-md p {
1952
+ margin: 10px 0;
1953
+ }
1954
+ .ez-md h5,
1955
+ .ez-md h6 {
1956
+ margin: 12px 0 4px;
1957
+ font-size: 12.5px;
1958
+ font-weight: 650;
1959
+ }
1960
+ .ez-md ul,
1961
+ .ez-md ol {
1962
+ margin: 10px 0;
1963
+ padding-left: 20px;
1964
+ }
1965
+ .ez-md li {
1966
+ margin: 3px 0;
1967
+ }
1968
+ .ez-md strong {
1969
+ font-weight: 600;
1970
+ }
1971
+ .ez-md a {
1972
+ color: inherit;
1973
+ text-decoration: underline;
1974
+ text-underline-offset: 2px;
1975
+ }
1976
+ .ez-md-code {
1977
+ font-family:
1978
+ ui-monospace,
1979
+ SFMono-Regular,
1980
+ Menlo,
1981
+ monospace;
1982
+ font-size: 0.92em;
1983
+ color: var(--code-ink);
1984
+ background: var(--code-fill);
1985
+ padding: 1.5px 5px;
1986
+ border-radius: 4px;
1987
+ overflow-wrap: anywhere;
1988
+ }
1989
+ .ez-md-pre {
1990
+ font-family:
1991
+ ui-monospace,
1992
+ SFMono-Regular,
1993
+ Menlo,
1994
+ monospace;
1995
+ font-size: 11px;
1996
+ line-height: 1.5;
1997
+ background: var(--muted);
1998
+ border-radius: 6px;
1999
+ padding: 8px 10px;
2000
+ margin: 7px 0;
2001
+ overflow-x: auto;
2002
+ white-space: pre;
2003
+ }
2004
+ .ez-acp-ask {
2005
+ margin: 8px 0 2px;
2006
+ border: 1px solid var(--border);
2007
+ border-radius: var(--radius);
2008
+ background: var(--panel);
2009
+ padding: 10px 12px;
2010
+ }
2011
+ .ez-acp-ask-title {
2012
+ font-size: 12.5px;
2013
+ font-weight: 550;
2014
+ margin-bottom: 8px;
2015
+ white-space: pre-wrap;
2016
+ }
2017
+ .ez-acp-ask-options {
2018
+ display: flex;
2019
+ flex-wrap: wrap;
2020
+ gap: 6px;
2021
+ }
2022
+ .ez-acp-opt {
2023
+ border: 1px solid var(--border);
2024
+ border-radius: 6px;
2025
+ background: var(--muted);
2026
+ color: var(--foreground);
2027
+ font-size: 12px;
2028
+ padding: 5px 10px;
2029
+ cursor: pointer;
2030
+ }
2031
+ .ez-acp-opt:hover {
2032
+ border-color: var(--ink-ghost);
2033
+ }
2034
+ .ez-acp-opt:disabled {
2035
+ opacity: 0.45;
2036
+ cursor: default;
2037
+ }
2038
+ .ez-acp-opt-allow_once,
2039
+ .ez-acp-opt-allow_always {
2040
+ background: var(--primary);
2041
+ color: var(--primary-foreground);
2042
+ border-color: var(--primary);
2043
+ }
2044
+ .ez-acp-ask-q {
2045
+ font-size: 12px;
2046
+ color: var(--muted-foreground);
2047
+ margin: 8px 0 6px;
2048
+ }
2049
+ .ez-acp-opt {
2050
+ display: inline-flex;
2051
+ flex-direction: column;
2052
+ align-items: flex-start;
2053
+ gap: 1px;
2054
+ text-align: left;
2055
+ }
2056
+ .ez-acp-opt-desc {
2057
+ font-size: 11px;
2058
+ color: var(--muted-foreground);
2059
+ }
2060
+ .ez-acp-opt.ez-on {
2061
+ border-color: var(--ink);
2062
+ }
2063
+ .ez-acp-field {
2064
+ display: block;
2065
+ width: 100%;
2066
+ box-sizing: border-box;
2067
+ border: 1px solid var(--border);
2068
+ border-radius: 6px;
2069
+ background: var(--panel);
2070
+ color: var(--foreground);
2071
+ font-family: inherit;
2072
+ font-size: 12.5px;
2073
+ line-height: 1.45;
2074
+ padding: 6px 8px;
2075
+ resize: none;
2076
+ outline: none;
2077
+ }
2078
+ .ez-acp-field:focus {
2079
+ border-color: var(--ring);
2080
+ outline: 3px solid var(--ring-halo);
2081
+ outline-offset: 0;
2082
+ }
2083
+ .ez-acp-field:disabled {
2084
+ opacity: 0.45;
2085
+ }
2086
+ .ez-acp-field-number {
2087
+ width: 140px;
2088
+ }
2089
+ .ez-acp-group {
2090
+ display: flex;
2091
+ flex-direction: column;
2092
+ gap: 6px;
2093
+ }
2094
+ .ez-acp-ask [hidden] {
2095
+ display: none;
2096
+ }
2097
+ .ez-acp-ask-actions {
2098
+ display: flex;
2099
+ gap: 6px;
2100
+ justify-content: flex-end;
2101
+ margin-top: 10px;
2102
+ }
2103
+ .ez-acp-opt-primary {
2104
+ background: var(--primary);
2105
+ color: var(--primary-foreground);
2106
+ border-color: var(--primary);
2107
+ }
2108
+ .ez-acp-opt-primary:disabled {
2109
+ opacity: 0.35;
2110
+ }
2111
+ .ez-acp-turn {
2112
+ display: flex;
2113
+ flex-direction: column;
2114
+ width: 100%;
2115
+ min-width: 0;
2116
+ }
2117
+ .ez-notice {
2118
+ position: relative;
2119
+ padding: 12px 14px;
2120
+ border-top: 1px solid var(--border);
2121
+ background: var(--muted);
2122
+ font-size: 12.5px;
2123
+ line-height: 1.5;
2124
+ flex-shrink: 0;
2125
+ }
2126
+ .ez-notice[hidden] {
2127
+ display: none;
2128
+ }
2129
+ .ez-notice-title {
2130
+ font-weight: 600;
2131
+ font-size: 13px;
2132
+ padding-right: 22px;
2133
+ }
2134
+ .ez-resume .ez-notice-title {
2135
+ font-size: 11px;
2136
+ font-weight: 500;
2137
+ line-height: 1.4;
2138
+ color: var(--ink);
2139
+ }
2140
+ .ez-notice-x {
2141
+ position: absolute;
2142
+ top: 6px;
2143
+ right: 6px;
2144
+ display: inline-flex;
2145
+ align-items: center;
2146
+ justify-content: center;
2147
+ padding: 6px;
2148
+ border: none;
2149
+ background: none;
2150
+ color: var(--ink-ghost);
2151
+ cursor: pointer;
2152
+ }
2153
+ .ez-notice-x:hover {
2154
+ color: var(--foreground);
2155
+ }
2156
+ .ez-notice-body {
2157
+ margin-top: 4px;
2158
+ color: var(--muted-foreground);
2159
+ }
2160
+ .ez-notice-actions {
2161
+ display: flex;
2162
+ align-items: center;
2163
+ gap: 8px;
2164
+ margin-top: 10px;
2165
+ }
2166
+ .ez-notice-go {
2167
+ border: 1px solid var(--primary);
2168
+ background: var(--primary);
2169
+ color: var(--primary-foreground);
2170
+ font-family: inherit;
2171
+ font-size: 12px;
2172
+ font-weight: 600;
2173
+ padding: 5px 12px;
2174
+ border-radius: 6px;
2175
+ cursor: pointer;
2176
+ box-shadow: inset 0 1px 0 0 oklch(100% 0 0 / 0.14);
2177
+ }
2178
+ .ez-notice-go:hover {
2179
+ opacity: 0.88;
2180
+ }
2181
+ .ez-notice-no {
2182
+ border: none;
2183
+ background: none;
2184
+ color: var(--muted-foreground);
2185
+ font-family: inherit;
2186
+ font-size: 12px;
2187
+ font-weight: 600;
2188
+ padding: 5px 2px;
2189
+ cursor: pointer;
2190
+ }
2191
+ .ez-notice-no:hover {
2192
+ color: var(--foreground);
2193
+ }
2194
+ .ez-notice-skip {
2195
+ display: inline-flex;
2196
+ align-items: center;
2197
+ gap: 5px;
2198
+ margin-top: 9px;
2199
+ color: var(--muted-foreground);
2200
+ font-size: 11px;
2201
+ cursor: pointer;
2202
+ user-select: none;
2203
+ }
2204
+ .ez-notice-skip[hidden] {
2205
+ display: none;
2206
+ }
2207
+ .ez-notice-skip:hover {
2208
+ color: var(--foreground);
2209
+ }
2210
+ .ez-notice-skip input {
2211
+ margin: 0;
2212
+ width: 12px;
2213
+ height: 12px;
2214
+ accent-color: var(--primary);
2215
+ cursor: pointer;
2216
+ }
2217
+ .ez-notice-list {
2218
+ --notice-row: 20px;
2219
+ display: flex;
2220
+ flex-direction: column;
2221
+ max-height: calc(var(--notice-row) * 7);
2222
+ overflow-y: auto;
2223
+ margin-top: 10px;
2224
+ overscroll-behavior: contain;
2225
+ }
2226
+ .ez-notice-row {
2227
+ display: flex;
2228
+ align-items: baseline;
2229
+ gap: 5px;
2230
+ width: 100%;
2231
+ padding: 0;
2232
+ border: none;
2233
+ background: none;
2234
+ color: var(--ink-faint);
2235
+ font-family: inherit;
2236
+ font-size: 12px;
2237
+ line-height: var(--notice-row);
2238
+ text-align: left;
2239
+ cursor: pointer;
2240
+ }
2241
+ .ez-notice-row:focus-visible {
2242
+ outline: none;
2243
+ }
2244
+ .ez-notice-row[data-active] {
2245
+ color: var(--foreground);
2246
+ }
2247
+ .ez-notice-row svg {
2248
+ flex-shrink: 0;
2249
+ visibility: hidden;
2250
+ color: var(--ink-faint);
2251
+ transform: translateY(2px);
2252
+ }
2253
+ .ez-notice-row[data-active] svg {
2254
+ visibility: visible;
2255
+ }
2256
+ .ez-notice-row[data-current] .ez-notice-row-name {
2257
+ font-weight: 500;
2258
+ }
2259
+ .ez-notice-row-name {
2260
+ flex: 1;
2261
+ min-width: 0;
2262
+ overflow: hidden;
2263
+ text-overflow: ellipsis;
2264
+ white-space: nowrap;
2265
+ }
2266
+ .ez-notice-row-when {
2267
+ flex-shrink: 0;
2268
+ color: var(--ink-ghost);
2269
+ font-size: 11px;
2270
+ font-variant-numeric: tabular-nums;
2271
+ }
2272
+ .ez-notice-row[data-active] .ez-notice-row-when {
2273
+ color: var(--ink-faint);
2274
+ }
2275
+ .ez-strip[hidden] {
2276
+ display: none;
2277
+ }
2278
+ .ez-stage-dock {
2279
+ position: absolute;
2280
+ left: 50%;
2281
+ bottom: 12px;
2282
+ transform: translateX(-50%);
2283
+ z-index: 3;
2284
+ display: flex;
2285
+ flex-direction: column;
2286
+ align-items: center;
2287
+ gap: 8px;
2288
+ max-width: calc(100% - 24px);
2289
+ }
2290
+ .ez-strip {
2291
+ display: flex;
2292
+ flex-direction: column;
2293
+ align-items: center;
2294
+ gap: 8px;
2295
+ max-width: 100%;
2296
+ }
2297
+ .ez-strip-pill,
2298
+ .ez-pick-pill {
2299
+ display: flex;
2300
+ align-items: center;
2301
+ gap: 8px;
2302
+ max-width: 100%;
2303
+ padding: 7px 8px 7px 12px;
2304
+ border-radius: 999px;
2305
+ background: var(--ink);
2306
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 6px 20px oklch(0% 0 0 / 0.3);
2307
+ color: #fff;
2308
+ font-size: 12px;
2309
+ line-height: 1.5;
2310
+ }
2311
+ .ez-strip-pill > svg {
2312
+ flex-shrink: 0;
2313
+ color: var(--explore-on-ink);
2314
+ }
2315
+ .ez-pick-pill[hidden] {
2316
+ display: none;
2317
+ }
2318
+ .ez-pick-pill {
2319
+ white-space: nowrap;
2320
+ }
2321
+ .ez-pick-pill > svg {
2322
+ flex-shrink: 0;
2323
+ color: var(--ref-accent);
2324
+ }
2325
+ .ez-pick-pill-text {
2326
+ overflow: hidden;
2327
+ text-overflow: ellipsis;
2328
+ min-width: 0;
2329
+ }
2330
+ .ez-pick-pill-cancel {
2331
+ flex-shrink: 0;
2332
+ padding: 3px 9px;
2333
+ border: 0;
2334
+ border-radius: 999px;
2335
+ background: oklch(100% 0 0 / 0.14);
2336
+ color: inherit;
2337
+ font: inherit;
2338
+ font-size: 11.5px;
2339
+ cursor: pointer;
2340
+ }
2341
+ .ez-pick-pill-cancel:hover {
2342
+ background: oklch(100% 0 0 / 0.24);
2343
+ }
2344
+ .ez-strip-chips {
2345
+ display: flex;
2346
+ align-items: center;
2347
+ gap: 4px;
2348
+ min-width: 0;
2349
+ overflow-x: auto;
2350
+ scrollbar-width: none;
2351
+ }
2352
+ .ez-strip-chips::-webkit-scrollbar {
2353
+ display: none;
2354
+ }
2355
+ .ez-strip-chip {
2356
+ flex: 0 0 auto;
2357
+ border: 0;
2358
+ border-radius: 999px;
2359
+ background: oklch(100% 0 0 / 0.14);
2360
+ color: inherit;
2361
+ font: inherit;
2362
+ padding: 4px 11px;
2363
+ max-width: 18ch;
2364
+ overflow: hidden;
2365
+ text-overflow: ellipsis;
2366
+ white-space: nowrap;
2367
+ cursor: pointer;
2368
+ }
2369
+ .ez-strip-chip:hover {
2370
+ background: oklch(100% 0 0 / 0.24);
2371
+ }
2372
+ .ez-strip-chip.ez-on {
2373
+ background: #fff;
2374
+ color: var(--ink);
2375
+ }
2376
+ .ez-strip-pending {
2377
+ flex: 0 0 auto;
2378
+ padding: 0 4px;
2379
+ color: oklch(100% 0 0 / 0.62);
2380
+ }
2381
+ .ez-strip-actions {
2382
+ position: relative;
2383
+ display: flex;
2384
+ align-items: center;
2385
+ gap: 4px;
2386
+ flex: 0 0 auto;
2387
+ padding-left: 8px;
2388
+ border-left: 1px solid oklch(100% 0 0 / 0.18);
2389
+ }
2390
+ .ez-strip-ask {
2391
+ position: absolute;
2392
+ bottom: calc(100% + 10px);
2393
+ right: 0;
2394
+ z-index: 6;
2395
+ width: 250px;
2396
+ display: flex;
2397
+ flex-direction: column;
2398
+ gap: 9px;
2399
+ padding: 11px 12px;
2400
+ border: 0;
2401
+ border-radius: 12px;
2402
+ background: var(--ink);
2403
+ color: #fff;
2404
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 14px 34px oklch(0% 0 0 / 0.38);
2405
+ font-size: 12px;
2406
+ line-height: 1.6;
2407
+ text-align: left;
2408
+ white-space: normal;
2409
+ transform-origin: bottom right;
2410
+ animation: ez-menu-in var(--t-menu) var(--ease-out) both;
2411
+ }
2412
+ .ez-strip-ask-actions {
2413
+ display: flex;
2414
+ align-items: center;
2415
+ gap: 6px;
2416
+ }
2417
+ .ez-strip-ask-go,
2418
+ .ez-strip-ask-no {
2419
+ border: 0;
2420
+ border-radius: 6px;
2421
+ font-family: inherit;
2422
+ font-size: 11.5px;
2423
+ line-height: 1.5;
2424
+ padding: 5px 11px;
2425
+ white-space: nowrap;
2426
+ cursor: pointer;
2427
+ }
2428
+ .ez-strip-ask-go {
2429
+ background: #fff;
2430
+ color: var(--ink);
2431
+ }
2432
+ .ez-strip-ask-no {
2433
+ background: oklch(100% 0 0 / 0.14);
2434
+ color: inherit;
2435
+ }
2436
+ .ez-strip-ask-no:hover {
2437
+ background: oklch(100% 0 0 / 0.24);
2438
+ }
2439
+ .ez-strip-ask-go:focus-visible,
2440
+ .ez-strip-ask-no:focus-visible {
2441
+ outline: 2px solid oklch(100% 0 0 / 0.7);
2442
+ outline-offset: 1px;
2443
+ }
2444
+ .ez-strip-ask-skip {
2445
+ display: flex;
2446
+ align-items: center;
2447
+ gap: 6px;
2448
+ color: oklch(100% 0 0 / 0.62);
2449
+ font-size: 11px;
2450
+ cursor: pointer;
2451
+ }
2452
+ .ez-strip-ask-skip input {
2453
+ accent-color: #fff;
2454
+ margin: 0;
2455
+ cursor: pointer;
2456
+ }
2457
+ .ez-strip-action {
2458
+ border: 0;
2459
+ border-radius: 999px;
2460
+ background: oklch(100% 0 0 / 0.14);
2461
+ color: inherit;
2462
+ font: inherit;
2463
+ font-size: 11.5px;
2464
+ padding: 3px 9px;
2465
+ white-space: nowrap;
2466
+ cursor: pointer;
2467
+ }
2468
+ .ez-strip-action:hover:not(:disabled) {
2469
+ background: oklch(100% 0 0 / 0.24);
2470
+ }
2471
+ .ez-strip-action:disabled {
2472
+ opacity: 0.45;
2473
+ cursor: default;
2474
+ }
2475
+ .ez-strip-chip:focus-visible,
2476
+ .ez-strip-action:focus-visible {
2477
+ outline: 2px solid oklch(100% 0 0 / 0.7);
2478
+ outline-offset: 1px;
2479
+ }
2480
+ .ez-fork-bar {
2481
+ position: relative;
2482
+ z-index: 1;
2483
+ display: flex;
2484
+ align-items: center;
2485
+ gap: 5px;
2486
+ min-width: 0;
2487
+ padding: 7px 0 7px;
2488
+ margin-inline: -14px;
2489
+ padding-inline: 14px;
2490
+ border-bottom: 1px solid var(--border);
2491
+ font-size: 12px;
2492
+ line-height: 1.5;
2493
+ animation: ez-fork-in var(--t-pop) var(--ease-out) both;
2494
+ }
2495
+ .ez-fork-bar[hidden] {
2496
+ display: none;
2497
+ }
2498
+ @keyframes ez-fork-in {
2499
+ from {
2500
+ opacity: 0;
2501
+ transform: translateY(-3px);
2502
+ }
2503
+ }
2504
+ .ez-fork-root {
2505
+ color: var(--muted-foreground);
2506
+ }
2507
+ .ez-fork-sep {
2508
+ display: inline-flex;
2509
+ align-items: center;
2510
+ color: var(--ink-ghost);
2511
+ }
2512
+ .ez-fork-root {
2513
+ flex-shrink: 0;
2514
+ border: none;
2515
+ background: none;
2516
+ padding: 0;
2517
+ font-family: inherit;
2518
+ font-size: inherit;
2519
+ line-height: inherit;
2520
+ cursor: pointer;
2521
+ }
2522
+ .ez-fork-root:hover {
2523
+ color: var(--foreground);
2524
+ }
2525
+ .ez-fork-sep {
2526
+ flex-shrink: 0;
2527
+ user-select: none;
2528
+ }
2529
+ .ez-fork-here {
2530
+ display: inline-flex;
2531
+ align-items: center;
2532
+ gap: 5px;
2533
+ min-width: 0;
2534
+ border: none;
2535
+ background: none;
2536
+ padding: 0;
2537
+ color: var(--foreground);
2538
+ font-family: inherit;
2539
+ font-size: inherit;
2540
+ line-height: inherit;
2541
+ font-weight: 500;
2542
+ color: var(--explore-ink);
2543
+ cursor: pointer;
2544
+ }
2545
+ .ez-fork-here:hover,
2546
+ .ez-fork-here[aria-expanded=true] {
2547
+ color: color-mix(in oklab, var(--explore-ink) 80%, var(--paper));
2548
+ }
2549
+ .ez-fork-here:hover svg,
2550
+ .ez-fork-here[aria-expanded=true] svg {
2551
+ color: color-mix(in oklab, var(--explore-accent) 80%, var(--paper));
2552
+ }
2553
+ .ez-fork-here:disabled {
2554
+ cursor: default;
2555
+ }
2556
+ .ez-fork-here:disabled:hover {
2557
+ color: var(--explore-ink);
2558
+ }
2559
+ .ez-fork-here:disabled:hover svg {
2560
+ color: var(--explore-accent);
2561
+ }
2562
+ .ez-fork-here svg {
2563
+ flex-shrink: 0;
2564
+ color: var(--explore-accent);
2565
+ }
2566
+ .ez-fork-name {
2567
+ overflow: hidden;
2568
+ text-overflow: ellipsis;
2569
+ white-space: nowrap;
2570
+ }
2571
+ .ez-fork-menu,
2572
+ .ez-fork-more-menu {
2573
+ position: absolute;
2574
+ top: calc(100% - 2px);
2575
+ z-index: 5;
2576
+ display: flex;
2577
+ min-width: 170px;
2578
+ max-width: min(100%, 280px);
2579
+ animation: ez-menu-in var(--t-menu) var(--ease-out) both;
2580
+ --notice-row: 22px;
2581
+ padding: 7px 4px;
2582
+ gap: 0;
2583
+ max-height: calc(var(--notice-row) * 7);
2584
+ overflow-y: auto;
2585
+ overscroll-behavior: contain;
2586
+ }
2587
+ .ez-fork-menu {
2588
+ left: 14px;
2589
+ right: auto;
2590
+ transform-origin: top left;
2591
+ }
2592
+ .ez-fork-more-menu {
2593
+ left: auto;
2594
+ right: 14px;
2595
+ transform-origin: top right;
2596
+ }
2597
+ .ez-fork-menu[hidden],
2598
+ .ez-fork-more-menu[hidden] {
2599
+ display: none;
2600
+ }
2601
+ @keyframes ez-menu-in {
2602
+ from {
2603
+ opacity: 0;
2604
+ transform: scale(0.96);
2605
+ }
2606
+ }
2607
+ .ez-fork-row {
2608
+ border-radius: 5px;
2609
+ }
2610
+ .ez-fork-row {
2611
+ padding: 0 6px;
2612
+ }
2613
+ .ez-fork-row .ez-notice-row-name {
2614
+ flex: 0 0 auto;
2615
+ }
2616
+ .ez-fork-row .ez-notice-row-when {
2617
+ flex: 1 1 auto;
2618
+ min-width: 0;
2619
+ overflow: hidden;
2620
+ text-overflow: ellipsis;
2621
+ white-space: nowrap;
2622
+ }
2623
+ .ez-fork-more {
2624
+ display: inline-flex;
2625
+ align-items: center;
2626
+ gap: 3px;
2627
+ flex-shrink: 0;
2628
+ margin-left: auto;
2629
+ border: none;
2630
+ background: none;
2631
+ padding: 0;
2632
+ color: var(--muted-foreground);
2633
+ font-family: inherit;
2634
+ font-size: inherit;
2635
+ line-height: inherit;
2636
+ white-space: nowrap;
2637
+ cursor: pointer;
2638
+ }
2639
+ .ez-fork-more:hover,
2640
+ .ez-fork-more[aria-expanded=true] {
2641
+ color: var(--foreground);
2642
+ }
2643
+ .ez-fork-more svg {
2644
+ color: var(--ink-ghost);
2645
+ }
2646
+ .ez-fork-root:disabled {
2647
+ color: var(--foreground);
2648
+ font-weight: 500;
2649
+ cursor: default;
2650
+ }
2651
+ .ez-fork-sep[hidden],
2652
+ .ez-fork-here[hidden],
2653
+ .ez-fork-more[hidden] {
2654
+ display: none;
2655
+ }
2656
+ .ez-conv-scroll[data-enter=deeper] {
2657
+ animation: ez-push-in var(--t-view) var(--ease-out) both;
2658
+ }
2659
+ .ez-conv-scroll[data-enter=back] {
2660
+ animation: ez-push-out var(--t-view) var(--ease-out) both;
2661
+ }
2662
+ .ez-conv-scroll[data-enter=swap] {
2663
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
2664
+ }
2665
+ @keyframes ez-push-in {
2666
+ from {
2667
+ opacity: 0;
2668
+ transform: translateX(14px);
2669
+ }
2670
+ }
2671
+ @keyframes ez-push-out {
2672
+ from {
2673
+ opacity: 0;
2674
+ transform: translateX(-14px);
2675
+ }
2676
+ }
2677
+ @keyframes ez-fade-in {
2678
+ from {
2679
+ opacity: 0;
2680
+ }
2681
+ }
2682
+ @media (prefers-reduced-motion: reduce) {
2683
+ .ez-fork-bar,
2684
+ .ez-fork-menu,
2685
+ .ez-conv-scroll[data-enter] {
2686
+ animation-name: ez-fade-in;
2687
+ animation-duration: var(--t-pop);
2688
+ }
2689
+ }
2690
+ .ez-announce {
2691
+ position: absolute;
2692
+ right: 12px;
2693
+ bottom: 12px;
2694
+ z-index: 4;
2695
+ width: 288px;
2696
+ max-width: calc(100% - 24px);
2697
+ padding: 6px 6px 14px;
2698
+ border-radius: 14px;
2699
+ background: var(--ink);
2700
+ color: #fff;
2701
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.08), 0 12px 32px oklch(0% 0 0 / 0.24);
2702
+ animation: ez-rise 0.16s ease-out;
2703
+ }
2704
+ .ez-stage[hidden] ~ .ez-announce {
2705
+ bottom: 52px;
2706
+ }
2707
+ .ez-stage-dock:has(> :not([hidden])) ~ .ez-announce {
2708
+ display: none;
2709
+ }
2710
+ .ez-announce-media {
2711
+ display: block;
2712
+ width: 100%;
2713
+ aspect-ratio: 16 / 10;
2714
+ object-fit: cover;
2715
+ border-radius: 8px;
2716
+ background: oklch(100% 0 0 / 0.06);
2717
+ }
2718
+ .ez-announce-text {
2719
+ padding: 12px 8px 0;
2720
+ }
2721
+ .ez-announce-title {
2722
+ margin: 0;
2723
+ font-size: 14px;
2724
+ font-weight: 600;
2725
+ line-height: 1.4;
2726
+ }
2727
+ .ez-announce-body {
2728
+ display: -webkit-box;
2729
+ -webkit-box-orient: vertical;
2730
+ -webkit-line-clamp: 3;
2731
+ overflow: hidden;
2732
+ margin: 4px 0 0;
2733
+ color: oklch(100% 0 0 / 0.62);
2734
+ font-size: 12.5px;
2735
+ line-height: 1.55;
2736
+ text-wrap: pretty;
2737
+ }
2738
+ .ez-announce-go {
2739
+ display: inline-flex;
2740
+ margin-top: 12px;
2741
+ padding: 6px 12px;
2742
+ border-radius: 7px;
2743
+ background: #fff;
2744
+ color: var(--ink);
2745
+ font-size: 12px;
2746
+ font-weight: 600;
2747
+ text-decoration: none;
2748
+ transition: background 0.12s ease;
2749
+ }
2750
+ .ez-announce-go:hover {
2751
+ background: oklch(100% 0 0 / 0.86);
2752
+ }
2753
+ .ez-announce-x {
2754
+ position: absolute;
2755
+ top: 12px;
2756
+ right: 12px;
2757
+ display: grid;
2758
+ place-items: center;
2759
+ width: 24px;
2760
+ height: 24px;
2761
+ padding: 0;
2762
+ border: none;
2763
+ border-radius: 50%;
2764
+ background: oklch(0% 0 0 / 0.42);
2765
+ color: #fff;
2766
+ backdrop-filter: blur(8px);
2767
+ cursor: pointer;
2768
+ transition: background 0.12s ease;
2769
+ }
2770
+ .ez-announce-x:hover {
2771
+ background: oklch(0% 0 0 / 0.62);
2772
+ }
2773
+ .ez-announce-go:focus-visible,
2774
+ .ez-announce-x:focus-visible {
2775
+ outline: 2px solid oklch(100% 0 0 / 0.7);
2776
+ outline-offset: 2px;
2777
+ }
2778
+ @media (prefers-reduced-motion: reduce) {
2779
+ .ez-announce {
2780
+ animation: none;
2781
+ }
2782
+ }
2783
+ .ez-stage-wrap.ez-tabbed {
2784
+ flex-direction: column;
2785
+ }
2786
+ .ez-stage-wrap.ez-tabbed .ez-shown {
2787
+ top: 52px;
2788
+ }
2789
+ .ez-stage[hidden],
2790
+ .ez-stage[hidden] ~ .ez-shown {
2791
+ display: none;
2792
+ }
2793
+ .ez-tabs-bar {
2794
+ display: flex;
2795
+ align-items: center;
2796
+ gap: 8px;
2797
+ height: 42px;
2798
+ flex-shrink: 0;
2799
+ padding: 0 10px 0 0;
2800
+ border-bottom: 1px solid var(--border);
2801
+ background: var(--background);
2802
+ }
2803
+ .ez-tabs {
2804
+ display: flex;
2805
+ align-self: stretch;
2806
+ flex: 1;
2807
+ min-width: 0;
2808
+ overflow-x: auto;
2809
+ scrollbar-width: none;
2810
+ }
2811
+ .ez-tab {
2812
+ position: relative;
2813
+ display: inline-flex;
2814
+ align-items: center;
2815
+ max-width: 220px;
2816
+ margin-right: -1px;
2817
+ padding: 0 14px;
2818
+ --tab-bg: var(--background);
2819
+ background: var(--tab-bg);
2820
+ font-size: 12.5px;
2821
+ font-weight: 500;
2822
+ color: var(--muted-foreground);
2823
+ white-space: nowrap;
2824
+ cursor: pointer;
2825
+ user-select: none;
2826
+ flex-shrink: 0;
2827
+ transition:
2828
+ background-color var(--t-pop) var(--ease-out),
2829
+ box-shadow var(--t-pop) var(--ease-out),
2830
+ color var(--t-pop) var(--ease-out);
2831
+ }
2832
+ .ez-tab:hover {
2833
+ z-index: 1;
2834
+ --tab-bg: color-mix(in srgb, var(--panel) 55%, var(--background));
2835
+ color: var(--foreground);
2836
+ box-shadow: inset 1px 0 color-mix(in srgb, var(--border) 85%, transparent), inset -1px 0 color-mix(in srgb, var(--border) 85%, transparent);
2837
+ }
2838
+ .ez-tab[aria-selected=true] {
2839
+ z-index: 2;
2840
+ --tab-bg: var(--panel);
2841
+ color: var(--foreground);
2842
+ box-shadow: inset 1px 0 var(--border), inset -1px 0 var(--border);
2843
+ }
2844
+ .ez-tab-label {
2845
+ display: flex;
2846
+ align-items: center;
2847
+ min-width: 0;
2848
+ }
2849
+ .ez-tab-label svg {
2850
+ flex-shrink: 0;
2851
+ translate: 0 0.5px;
2852
+ margin-right: 6px;
2853
+ color: var(--app-accent);
2854
+ }
2855
+ .ez-tab-label svg path {
2856
+ stroke-width: 1.9;
2857
+ }
2858
+ .ez-tab-name {
2859
+ overflow: hidden;
2860
+ text-overflow: ellipsis;
2861
+ }
2862
+ .ez-tab-close {
2863
+ position: absolute;
2864
+ top: 50%;
2865
+ right: 6px;
2866
+ translate: 0 -50%;
2867
+ display: grid;
2868
+ place-items: center;
2869
+ width: 18px;
2870
+ height: 18px;
2871
+ padding: 0;
2872
+ border: none;
2873
+ border-radius: 5px;
2874
+ background: var(--tab-bg);
2875
+ color: var(--ink-faint);
2876
+ font-size: 14px;
2877
+ line-height: 1;
2878
+ cursor: pointer;
2879
+ opacity: 0;
2880
+ transition: background-color var(--t-pop) var(--ease-out), opacity var(--t-pop) var(--ease-out);
2881
+ }
2882
+ .ez-tab-close::before {
2883
+ content: "";
2884
+ position: absolute;
2885
+ inset: 0 100% 0 auto;
2886
+ width: 14px;
2887
+ background:
2888
+ linear-gradient(
2889
+ to right,
2890
+ transparent,
2891
+ var(--tab-bg));
2892
+ pointer-events: none;
2893
+ }
2894
+ .ez-tab:hover .ez-tab-close,
2895
+ .ez-tab-close:focus-visible {
2896
+ opacity: 1;
2897
+ }
2898
+ .ez-tab-close:hover {
2899
+ background: color-mix(in srgb, var(--tab-bg), var(--foreground) 8%);
2900
+ color: var(--foreground);
2901
+ }
2902
+ .ez-tab[data-renaming] .ez-tab-name {
2903
+ text-overflow: clip;
2904
+ cursor: text;
2905
+ outline: none;
2906
+ }
2907
+ .ez-tab[data-renaming] .ez-tab-close {
2908
+ display: none;
2909
+ }
2910
+ .ez-tabs-tail {
2911
+ display: flex;
2912
+ align-items: center;
2913
+ flex-shrink: 0;
2914
+ }
2915
+ .ez-tab-new,
2916
+ .ez-canvas-menu {
2917
+ display: grid;
2918
+ place-items: center;
2919
+ width: 28px;
2920
+ height: 28px;
2921
+ padding: 0;
2922
+ border: none;
2923
+ border-radius: 7px;
2924
+ background: transparent;
2925
+ color: var(--muted-foreground);
2926
+ font-family: inherit;
2927
+ cursor: pointer;
2928
+ }
2929
+ .ez-tab-new path {
2930
+ stroke-width: 2.25;
2931
+ }
2932
+ .ez-canvas-menu path {
2933
+ stroke-width: 1.75;
2934
+ }
2935
+ .ez-tab-new:hover,
2936
+ .ez-canvas-menu:hover,
2937
+ .ez-canvas-menu-wrap[data-open] .ez-canvas-menu {
2938
+ background: var(--muted);
2939
+ color: var(--foreground);
2940
+ }
2941
+ .ez-canvas-menu-wrap {
2942
+ position: relative;
2943
+ }
2944
+ .ez-canvas-menu-list {
2945
+ min-width: 200px;
2946
+ max-width: 320px;
2947
+ z-index: 20;
2948
+ }
2949
+ .ez-canvas-menu-item {
2950
+ position: relative;
2951
+ display: flex;
2952
+ align-items: center;
2953
+ }
2954
+ .ez-canvas-menu-item:hover .ez-canvas-menu-open {
2955
+ background: var(--muted);
2956
+ }
2957
+ .ez-canvas-menu-open {
2958
+ flex: 1;
2959
+ min-width: 0;
2960
+ padding-right: 40px;
2961
+ }
2962
+ .ez-canvas-menu-open .ez-menu-name {
2963
+ min-width: 0;
2964
+ overflow: hidden;
2965
+ text-overflow: ellipsis;
2966
+ white-space: nowrap;
2967
+ }
2968
+ .ez-canvas-menu-item[data-archived] .ez-menu-name {
2969
+ color: var(--muted-foreground);
2970
+ }
2971
+ .ez-canvas-menu-delete {
2972
+ position: absolute;
2973
+ top: 50%;
2974
+ right: 8px;
2975
+ translate: 0 -50%;
2976
+ padding: 0;
2977
+ border: none;
2978
+ background: transparent;
2979
+ color: var(--muted-foreground);
2980
+ font-family: inherit;
2981
+ font-size: 12px;
2982
+ cursor: pointer;
2983
+ visibility: hidden;
2984
+ }
2985
+ .ez-canvas-menu-item:is(:hover, :has(:focus-visible)) .ez-canvas-menu-delete {
2986
+ visibility: visible;
2987
+ }
2988
+ .ez-canvas-menu-delete:hover,
2989
+ .ez-canvas-menu-delete:focus-visible {
2990
+ color: var(--foreground);
2991
+ }
2992
+ .ez-canvas-menu-empty {
2993
+ padding: 6px 8px;
2994
+ font-size: 12px;
2995
+ color: var(--muted-foreground);
2996
+ }
2997
+ .ez-dialog {
2998
+ width: min(400px, calc(100vw - 32px));
2999
+ max-width: none;
3000
+ padding: 0;
3001
+ border: 1px solid var(--border);
3002
+ border-radius: 12px;
3003
+ background: var(--panel);
3004
+ color: var(--foreground);
3005
+ box-shadow: 0 24px 64px oklch(0% 0 0 / 0.16), 0 2px 8px oklch(0% 0 0 / 0.06);
3006
+ animation: ez-menu-in var(--t-menu) var(--ease-out) both;
3007
+ }
3008
+ .ez-dialog::backdrop {
3009
+ background: oklch(0% 0 0 / 0.18);
3010
+ animation: ez-fade-in var(--t-menu) var(--ease-out) both;
3011
+ }
3012
+ .ez-dialog-card {
3013
+ padding: 20px;
3014
+ }
3015
+ .ez-dialog-title {
3016
+ margin: 0;
3017
+ font-size: 16px;
3018
+ font-weight: 600;
3019
+ line-height: 1.4;
3020
+ }
3021
+ .ez-dialog-body {
3022
+ margin: 8px 0 0;
3023
+ font-size: 14px;
3024
+ line-height: 1.55;
3025
+ color: var(--muted-foreground);
3026
+ }
3027
+ .ez-dialog-actions {
3028
+ display: flex;
3029
+ justify-content: flex-end;
3030
+ gap: 8px;
3031
+ margin-top: 20px;
3032
+ }
3033
+ .ez-dialog-cancel,
3034
+ .ez-dialog-go {
3035
+ height: 36px;
3036
+ padding: 0 16px;
3037
+ border-radius: 7px;
3038
+ font-family: inherit;
3039
+ font-size: 14px;
3040
+ font-weight: 600;
3041
+ cursor: pointer;
3042
+ }
3043
+ .ez-dialog-cancel {
3044
+ border: 1px solid var(--border);
3045
+ background: var(--panel);
3046
+ color: var(--foreground);
3047
+ }
3048
+ .ez-dialog-cancel:hover {
3049
+ background: var(--muted);
3050
+ }
3051
+ .ez-dialog-go {
3052
+ border: 1px solid var(--primary);
3053
+ background: var(--primary);
3054
+ color: var(--primary-foreground);
3055
+ box-shadow: inset 0 1px 0 0 oklch(100% 0 0 / 0.14);
3056
+ }
3057
+ .ez-dialog-go:hover {
3058
+ opacity: 0.88;
3059
+ }
3060
+ .ez-board {
3061
+ position: relative;
3062
+ flex: 1;
3063
+ min-height: 0;
3064
+ overflow: clip;
3065
+ background: var(--paper-sunken);
3066
+ outline: none;
3067
+ touch-action: none;
3068
+ }
3069
+ .ez-board[hidden] {
3070
+ display: none;
3071
+ }
3072
+ .ez-board.ez-space {
3073
+ cursor: grab;
3074
+ }
3075
+ .ez-board.ez-panning {
3076
+ cursor: grabbing;
3077
+ }
3078
+ .ez-board-world {
3079
+ position: absolute;
3080
+ left: 0;
3081
+ top: 0;
3082
+ transform-origin: 0 0;
3083
+ }
3084
+ .ez-board-frame {
3085
+ position: absolute;
3086
+ left: 0;
3087
+ top: 0;
3088
+ background: #fff;
3089
+ box-shadow: 0 calc(4px / var(--ez-zoom, 1)) calc(18px / var(--ez-zoom, 1)) oklch(0% 0 0 / 0.07);
3090
+ outline: calc(1px / var(--ez-zoom, 1)) solid var(--border);
3091
+ outline-offset: calc(-0.5px / var(--ez-zoom, 1));
3092
+ }
3093
+ .ez-board-frame.ez-live,
3094
+ .ez-board-frame[aria-selected=true] {
3095
+ outline-color: var(--arrange);
3096
+ }
3097
+ .ez-board-heads {
3098
+ position: absolute;
3099
+ left: 0;
3100
+ top: 0;
3101
+ pointer-events: none;
3102
+ }
3103
+ .ez-board-frame-head {
3104
+ position: absolute;
3105
+ left: 0;
3106
+ top: 0;
3107
+ display: flex;
3108
+ padding-bottom: 6px;
3109
+ font-size: 12px;
3110
+ line-height: 16px;
3111
+ white-space: nowrap;
3112
+ cursor: default;
3113
+ user-select: none;
3114
+ pointer-events: auto;
3115
+ }
3116
+ .ez-board-frame-head.ez-selected .ez-board-frame-title {
3117
+ color: var(--ink);
3118
+ }
3119
+ .ez-picking-frames .ez-board-frame-head {
3120
+ cursor: pointer;
3121
+ }
3122
+ .ez-board-frame.ez-pick-target {
3123
+ outline: calc(2px / var(--ez-zoom, 1)) solid var(--ref-accent);
3124
+ outline-offset: calc(-1px / var(--ez-zoom, 1));
3125
+ }
3126
+ .ez-picking-frames .ez-board-frame-head:hover .ez-board-frame-title {
3127
+ color: var(--ref-accent);
3128
+ }
3129
+ .ez-guides {
3130
+ position: absolute;
3131
+ left: 0;
3132
+ top: 0;
3133
+ z-index: 100000;
3134
+ pointer-events: none;
3135
+ }
3136
+ .ez-guide {
3137
+ position: absolute;
3138
+ left: 0;
3139
+ top: 0;
3140
+ background: var(--arrange);
3141
+ }
3142
+ .ez-guide[data-axis=x] {
3143
+ width: calc(1px / var(--ez-zoom, 1));
3144
+ margin-left: calc(-0.5px / var(--ez-zoom, 1));
3145
+ }
3146
+ .ez-guide[data-axis=y] {
3147
+ height: calc(1px / var(--ez-zoom, 1));
3148
+ margin-top: calc(-0.5px / var(--ez-zoom, 1));
3149
+ }
3150
+ .ez-board.ez-arranging,
3151
+ .ez-board.ez-arranging .ez-board-frame,
3152
+ .ez-board.ez-arranging .ez-board-frame-head {
3153
+ cursor: grabbing;
3154
+ user-select: none;
3155
+ }
3156
+ .ez-board-frame-title {
3157
+ max-width: 100%;
3158
+ overflow: hidden;
3159
+ text-overflow: ellipsis;
3160
+ font-weight: 500;
3161
+ color: var(--foreground);
3162
+ }
3163
+ .ez-board-iframe {
3164
+ display: block;
3165
+ width: 100%;
3166
+ height: 100%;
3167
+ border: 0;
3168
+ background: #fff;
3169
+ pointer-events: none;
3170
+ }
3171
+ .ez-board.ez-annotating .ez-board-iframe,
3172
+ .ez-picking .ez-board-iframe,
3173
+ .ez-board-frame.ez-live .ez-board-iframe {
3174
+ pointer-events: auto;
3175
+ }
3176
+ .ez-board.ez-moving .ez-board-iframe,
3177
+ .ez-board.ez-space .ez-board-iframe,
3178
+ .ez-board.ez-arranging .ez-board-iframe {
3179
+ pointer-events: none;
3180
+ }
3181
+ .ez-board-empty {
3182
+ position: absolute;
3183
+ inset: 0;
3184
+ display: grid;
3185
+ place-items: center;
3186
+ color: color-mix(in srgb, var(--paper-edge), var(--ink-ghost) 8%);
3187
+ pointer-events: none;
3188
+ }
3189
+ .ez-board-empty[hidden] {
3190
+ display: none;
3191
+ }
3192
+ .ez-board-tools {
3193
+ position: absolute;
3194
+ right: 12px;
3195
+ bottom: 12px;
3196
+ display: flex;
3197
+ align-items: center;
3198
+ padding: 3px;
3199
+ border-radius: 9px;
3200
+ background: color-mix(in srgb, var(--panel) 72%, transparent);
3201
+ box-shadow: 0 0 0 1px oklch(0% 0 0 / 0.05);
3202
+ backdrop-filter: blur(16px) saturate(1.4);
3203
+ }
3204
+ .ez-board-tool {
3205
+ display: grid;
3206
+ place-items: center;
3207
+ width: 26px;
3208
+ height: 26px;
3209
+ padding: 0;
3210
+ border: none;
3211
+ border-radius: 6px;
3212
+ background: transparent;
3213
+ color: var(--muted-foreground);
3214
+ cursor: pointer;
3215
+ }
3216
+ .ez-board-tool path {
3217
+ stroke-width: 2;
3218
+ }
3219
+ .ez-board-tool:hover {
3220
+ background: var(--muted);
3221
+ color: var(--foreground);
3222
+ }
3223
+ .ez-board-zoom {
3224
+ min-width: 38px;
3225
+ padding-left: 2px;
3226
+ text-align: center;
3227
+ font-size: 12px;
3228
+ font-variant-numeric: tabular-nums;
3229
+ color: var(--muted-foreground);
3230
+ }
3231
+ .ez-library {
3232
+ position: absolute;
3233
+ inset: 0 44px 0 0;
3234
+ z-index: 30;
3235
+ display: flex;
3236
+ background: var(--background);
3237
+ }
3238
+ .ez-library[data-entering] {
3239
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
3240
+ }
3241
+ .ez-library[hidden] {
3242
+ display: none;
3243
+ }
3244
+ .ez-library-scroll {
3245
+ flex: 1;
3246
+ min-width: 0;
3247
+ overflow-y: auto;
3248
+ }
3249
+ .ez-library-head {
3250
+ position: sticky;
3251
+ top: 0;
3252
+ z-index: 1;
3253
+ display: grid;
3254
+ justify-items: start;
3255
+ gap: 14px;
3256
+ padding: 28px 32px 18px;
3257
+ background: var(--background);
3258
+ }
3259
+ .ez-library-title {
3260
+ margin: 0;
3261
+ font-size: 20px;
3262
+ font-weight: 600;
3263
+ letter-spacing: -0.01em;
3264
+ line-height: 1.3;
3265
+ }
3266
+ .ez-library-search {
3267
+ display: flex;
3268
+ align-items: center;
3269
+ gap: 8px;
3270
+ width: min(420px, 100%);
3271
+ height: 36px;
3272
+ padding: 0 6px 0 11px;
3273
+ border: 1px solid var(--border);
3274
+ border-radius: var(--radius);
3275
+ background: var(--panel);
3276
+ color: var(--ink-faint);
3277
+ cursor: text;
3278
+ transition: border-color var(--t-pop) var(--ease-out), box-shadow var(--t-pop) var(--ease-out);
3279
+ }
3280
+ .ez-library-search:focus-within {
3281
+ border-color: var(--ring);
3282
+ box-shadow: 0 0 0 3px var(--ring-halo);
3283
+ }
3284
+ .ez-library-search input {
3285
+ flex: 1;
3286
+ min-width: 0;
3287
+ height: 100%;
3288
+ padding: 0;
3289
+ border: 0;
3290
+ outline: none;
3291
+ background: transparent;
3292
+ color: var(--foreground);
3293
+ font: inherit;
3294
+ font-size: 14px;
3295
+ }
3296
+ .ez-library-search input::placeholder {
3297
+ color: var(--ink-ghost);
3298
+ }
3299
+ .ez-library-search input::-webkit-search-cancel-button {
3300
+ display: none;
3301
+ }
3302
+ .ez-library-search-clear {
3303
+ display: grid;
3304
+ place-items: center;
3305
+ width: 24px;
3306
+ height: 24px;
3307
+ padding: 0;
3308
+ border: 0;
3309
+ border-radius: 6px;
3310
+ background: transparent;
3311
+ color: var(--ink-faint);
3312
+ cursor: pointer;
3313
+ }
3314
+ .ez-library-search-clear:hover {
3315
+ background: var(--muted);
3316
+ color: var(--foreground);
3317
+ }
3318
+ .ez-library-search-clear[hidden] {
3319
+ display: none;
3320
+ }
3321
+ .ez-library-tags {
3322
+ display: flex;
3323
+ flex-wrap: wrap;
3324
+ gap: 6px;
3325
+ }
3326
+ .ez-library-tags[hidden] {
3327
+ display: none;
3328
+ }
3329
+ .ez-library-tag {
3330
+ display: inline-flex;
3331
+ align-items: center;
3332
+ gap: 6px;
3333
+ height: 28px;
3334
+ padding: 0 10px;
3335
+ border: 0;
3336
+ border-radius: 7px;
3337
+ background: var(--muted);
3338
+ color: var(--foreground);
3339
+ font-family: inherit;
3340
+ font-size: 13px;
3341
+ font-weight: 500;
3342
+ white-space: nowrap;
3343
+ cursor: pointer;
3344
+ transition: background-color var(--t-pop) var(--ease-out), color var(--t-pop) var(--ease-out);
3345
+ }
3346
+ .ez-library-tag:hover {
3347
+ background: var(--border);
3348
+ }
3349
+ .ez-library-tag[aria-pressed=true] {
3350
+ background: var(--primary);
3351
+ color: var(--primary-foreground);
3352
+ }
3353
+ .ez-library-tag-uses {
3354
+ color: var(--ink-faint);
3355
+ font-size: 11px;
3356
+ font-variant-numeric: tabular-nums;
3357
+ }
3358
+ .ez-library-tag[aria-pressed=true] .ez-library-tag-uses {
3359
+ color: oklch(100% 0 0 / 0.6);
3360
+ }
3361
+ .ez-library-grid {
3362
+ display: grid;
3363
+ grid-template-columns: repeat(6, minmax(0, 1fr));
3364
+ gap: 22px 16px;
3365
+ margin: 0;
3366
+ padding: 6px 32px 40px;
3367
+ list-style: none;
3368
+ }
3369
+ .ez-library-card {
3370
+ display: grid;
3371
+ gap: 8px;
3372
+ width: 100%;
3373
+ padding: 0;
3374
+ border: 0;
3375
+ background: none;
3376
+ color: inherit;
3377
+ font: inherit;
3378
+ text-align: left;
3379
+ cursor: pointer;
3380
+ }
3381
+ .ez-library-card:focus-visible {
3382
+ outline: none;
3383
+ }
3384
+ .ez-library-card-media {
3385
+ --tile-radius: 14px;
3386
+ --tile-inset: 10px;
3387
+ --badge-inset: 8px;
3388
+ position: relative;
3389
+ display: block;
3390
+ aspect-ratio: 1;
3391
+ border-radius: var(--tile-radius);
3392
+ background: var(--muted);
3393
+ transition: background-color var(--t-pop) var(--ease-out), box-shadow var(--t-pop) var(--ease-out);
3394
+ }
3395
+ .ez-library-card:hover .ez-library-card-media {
3396
+ background: var(--border);
3397
+ }
3398
+ .ez-library-card:focus-visible .ez-library-card-media {
3399
+ box-shadow: 0 0 0 3px var(--ring-halo);
3400
+ }
3401
+ .ez-library-card-frame {
3402
+ position: absolute;
3403
+ inset: var(--tile-inset);
3404
+ display: flex;
3405
+ align-items: center;
3406
+ justify-content: center;
3407
+ }
3408
+ .ez-library-card-media img {
3409
+ display: block;
3410
+ max-width: 100%;
3411
+ max-height: 100%;
3412
+ border-radius: max(0px, var(--tile-radius) - var(--tile-inset));
3413
+ outline: 1px solid var(--image-outline);
3414
+ outline-offset: -1px;
3415
+ box-shadow: 0 1px 3px oklch(0% 0 0 / 0.06);
3416
+ }
3417
+ .ez-library-card-badge {
3418
+ position: absolute;
3419
+ top: var(--badge-inset);
3420
+ left: var(--badge-inset);
3421
+ display: inline-flex;
3422
+ align-items: center;
3423
+ gap: 3px;
3424
+ height: 20px;
3425
+ padding: 0 7px 0 5px;
3426
+ border-radius: calc(var(--tile-radius) - var(--badge-inset));
3427
+ background: oklch(0% 0 0 / 0.62);
3428
+ backdrop-filter: blur(8px);
3429
+ color: #fff;
3430
+ font-size: 11px;
3431
+ font-weight: 500;
3432
+ }
3433
+ .ez-library-card-caption {
3434
+ overflow: hidden;
3435
+ color: var(--muted-foreground);
3436
+ font-size: 12px;
3437
+ line-height: 1.4;
3438
+ white-space: nowrap;
3439
+ text-overflow: ellipsis;
3440
+ }
3441
+ .ez-library-sentinel {
3442
+ height: 1px;
3443
+ }
3444
+ .ez-library-empty {
3445
+ display: grid;
3446
+ justify-items: center;
3447
+ gap: 6px;
3448
+ max-width: 460px;
3449
+ margin: 12vh auto 0;
3450
+ padding: 0 24px;
3451
+ text-align: center;
3452
+ }
3453
+ .ez-library-empty[hidden] {
3454
+ display: none;
3455
+ }
3456
+ .ez-library-empty-title {
3457
+ margin: 0 0 4px;
3458
+ font-size: 15px;
3459
+ font-weight: 600;
3460
+ }
3461
+ .ez-library-empty-body {
3462
+ margin: 0;
3463
+ color: var(--muted-foreground);
3464
+ font-size: 13px;
3465
+ line-height: 1.6;
3466
+ }
3467
+ .ez-library-empty code,
3468
+ .ez-library-empty kbd {
3469
+ padding: 1px 5px;
3470
+ border-radius: 4px;
3471
+ background: var(--muted);
3472
+ color: var(--foreground);
3473
+ font:
3474
+ 12px ui-monospace,
3475
+ "SF Mono",
3476
+ Menlo,
3477
+ monospace;
3478
+ white-space: nowrap;
3479
+ }
3480
+ .ez-library-empty-action {
3481
+ height: 32px;
3482
+ margin-top: 8px;
3483
+ padding: 0 14px;
3484
+ border: 1px solid var(--border);
3485
+ border-radius: 7px;
3486
+ background: var(--panel);
3487
+ color: var(--foreground);
3488
+ font-family: inherit;
3489
+ font-size: 13px;
3490
+ font-weight: 600;
3491
+ cursor: pointer;
3492
+ }
3493
+ .ez-library-empty-action:hover {
3494
+ background: var(--muted);
3495
+ }
3496
+ .ez-library-empty-link {
3497
+ margin-top: 6px;
3498
+ padding: 0;
3499
+ border: 0;
3500
+ background: none;
3501
+ color: var(--foreground);
3502
+ font-family: inherit;
3503
+ font-size: 13px;
3504
+ font-weight: 500;
3505
+ text-decoration: underline;
3506
+ text-decoration-color: var(--ink-ghost);
3507
+ text-underline-offset: 3px;
3508
+ cursor: pointer;
3509
+ transition: text-decoration-color var(--t-pop) var(--ease-out);
3510
+ }
3511
+ .ez-library-empty-link:hover {
3512
+ text-decoration-color: currentColor;
3513
+ }
3514
+ .ez-library-toast {
3515
+ position: absolute;
3516
+ top: 16px;
3517
+ left: 50%;
3518
+ z-index: 2;
3519
+ margin: 0;
3520
+ padding: 6px 12px;
3521
+ border-radius: 8px;
3522
+ background: oklch(0% 0 0 / 0.78);
3523
+ backdrop-filter: blur(16px) saturate(1.6);
3524
+ box-shadow: inset 0 0 0 1px oklch(100% 0 0 / 0.1), 0 4px 16px oklch(0% 0 0 / 0.16);
3525
+ color: #fff;
3526
+ font-size: 12px;
3527
+ font-weight: 500;
3528
+ line-height: 1.5;
3529
+ white-space: nowrap;
3530
+ pointer-events: none;
3531
+ transform: translateX(-50%);
3532
+ animation: ez-toast-in var(--t-view) var(--ease-out) both;
3533
+ }
3534
+ .ez-library-toast[hidden] {
3535
+ display: none;
3536
+ }
3537
+ @keyframes ez-toast-in {
3538
+ from {
3539
+ opacity: 0;
3540
+ transform: translate(-50%, -6px) scale(0.96);
3541
+ }
3542
+ }
3543
+ @media (prefers-reduced-motion: reduce) {
3544
+ .ez-library-toast {
3545
+ animation-name: ez-fade-in;
3546
+ }
3547
+ }
3548
+ .ez-install {
3549
+ width: min(460px, calc(100vw - 32px));
3550
+ }
3551
+ .ez-install-steps {
3552
+ display: grid;
3553
+ gap: 14px;
3554
+ margin: 14px 0 0;
3555
+ padding: 0;
3556
+ list-style: none;
3557
+ counter-reset: step;
3558
+ }
3559
+ .ez-install-step {
3560
+ display: grid;
3561
+ grid-template-columns: 20px minmax(0, 1fr);
3562
+ column-gap: 10px;
3563
+ row-gap: 6px;
3564
+ font-size: 14px;
3565
+ line-height: 20px;
3566
+ counter-increment: step;
3567
+ }
3568
+ .ez-install-step::before {
3569
+ content: counter(step);
3570
+ grid-row: 1 / span 3;
3571
+ display: grid;
3572
+ place-items: center;
3573
+ width: 20px;
3574
+ height: 20px;
3575
+ border-radius: 50%;
3576
+ background: var(--muted);
3577
+ color: var(--muted-foreground);
3578
+ font-size: 12px;
3579
+ font-weight: 600;
3580
+ font-variant-numeric: tabular-nums;
3581
+ }
3582
+ .ez-install-step > * {
3583
+ grid-column: 2;
3584
+ }
3585
+ .ez-install-copy {
3586
+ display: flex;
3587
+ align-items: center;
3588
+ gap: 4px;
3589
+ padding: 4px 4px 4px 10px;
3590
+ border: 1px solid var(--border);
3591
+ border-radius: 7px;
3592
+ background: var(--muted);
3593
+ }
3594
+ .ez-install-copy code {
3595
+ flex: 1;
3596
+ min-width: 0;
3597
+ overflow-wrap: anywhere;
3598
+ font:
3599
+ 12px/1.5 ui-monospace,
3600
+ "SF Mono",
3601
+ Menlo,
3602
+ monospace;
3603
+ }
3604
+ .ez-install-copy-button {
3605
+ display: grid;
3606
+ flex-shrink: 0;
3607
+ place-items: center;
3608
+ width: 26px;
3609
+ height: 26px;
3610
+ padding: 0;
3611
+ border: 0;
3612
+ border-radius: 5px;
3613
+ background: none;
3614
+ color: var(--muted-foreground);
3615
+ cursor: pointer;
3616
+ }
3617
+ .ez-install-copy-button:hover {
3618
+ background: var(--border);
3619
+ color: var(--foreground);
3620
+ }
3621
+ .ez-install-hint {
3622
+ color: var(--muted-foreground);
3623
+ font-size: 12px;
3624
+ line-height: 1.5;
3625
+ }
3626
+ .ez-install .ez-dialog-actions {
3627
+ align-items: center;
3628
+ }
3629
+ .ez-install-status {
3630
+ display: flex;
3631
+ align-items: center;
3632
+ gap: 6px;
3633
+ margin: 0 auto 0 0;
3634
+ color: var(--muted-foreground);
3635
+ font-size: 13px;
3636
+ }
3637
+ .ez-install-status[data-tone=ok] {
3638
+ color: var(--attach-ink);
3639
+ }
3640
+ .ez-install-waiting {
3641
+ width: 6px;
3642
+ height: 6px;
3643
+ border-radius: 50%;
3644
+ background: currentColor;
3645
+ animation: ez-pulse 1.4s ease-in-out infinite;
3646
+ }
3647
+ .ez-install-body .ez-library-empty-action {
3648
+ margin-top: 12px;
3649
+ }
3650
+ .ez-library-picker {
3651
+ display: flex;
3652
+ flex-direction: column;
3653
+ width: min(960px, calc(100vw - 48px));
3654
+ max-width: none;
3655
+ height: min(720px, calc(100vh - 48px));
3656
+ max-height: none;
3657
+ padding: 0;
3658
+ border: 0;
3659
+ border-radius: 14px;
3660
+ overflow: hidden;
3661
+ background: var(--panel);
3662
+ color: var(--foreground);
3663
+ box-shadow:
3664
+ 0 0 0 1px oklch(0% 0 0 / 0.06),
3665
+ 0 24px 64px oklch(0% 0 0 / 0.24),
3666
+ 0 4px 12px oklch(0% 0 0 / 0.08);
3667
+ animation: ez-menu-in var(--t-view) var(--ease-out) both;
3668
+ }
3669
+ .ez-library-picker:not([open]) {
3670
+ display: none;
3671
+ }
3672
+ .ez-library-picker::backdrop {
3673
+ background: oklch(0% 0 0 / 0.32);
3674
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
3675
+ }
3676
+ .ez-library-picker-top {
3677
+ display: flex;
3678
+ align-items: center;
3679
+ justify-content: space-between;
3680
+ gap: 8px;
3681
+ padding: 16px 16px 0 24px;
3682
+ }
3683
+ .ez-library-picker-title {
3684
+ margin: 0;
3685
+ font-size: 16px;
3686
+ font-weight: 600;
3687
+ line-height: 1.4;
3688
+ }
3689
+ .ez-library-picker .ez-library-scroll {
3690
+ min-height: 0;
3691
+ }
3692
+ .ez-library-picker .ez-library-head {
3693
+ padding: 12px 24px 14px;
3694
+ background: var(--panel);
3695
+ }
3696
+ .ez-library-picker .ez-library-grid {
3697
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3698
+ gap: 14px;
3699
+ padding: 4px 24px 24px;
3700
+ }
3701
+ .ez-library-picker .ez-library-empty {
3702
+ margin-top: 8vh;
3703
+ }
3704
+ .ez-library-card-check {
3705
+ position: absolute;
3706
+ top: 8px;
3707
+ right: 8px;
3708
+ display: grid;
3709
+ place-items: center;
3710
+ width: 20px;
3711
+ height: 20px;
3712
+ border-radius: 50%;
3713
+ background: var(--primary);
3714
+ color: var(--primary-foreground);
3715
+ opacity: 0;
3716
+ transform: scale(0.8);
3717
+ transition: opacity var(--t-pop) var(--ease-out), transform var(--t-pop) var(--ease-out);
3718
+ }
3719
+ .ez-library-card[aria-pressed=true] .ez-library-card-check {
3720
+ opacity: 1;
3721
+ transform: none;
3722
+ }
3723
+ .ez-library-card-check path {
3724
+ stroke-width: 2.5;
3725
+ }
3726
+ .ez-library-card[aria-pressed=true] .ez-library-card-media {
3727
+ box-shadow: inset 0 0 0 2px var(--primary);
3728
+ }
3729
+ .ez-library-card[aria-pressed=true]:focus-visible .ez-library-card-media {
3730
+ box-shadow: inset 0 0 0 2px var(--primary), 0 0 0 3px var(--ring-halo);
3731
+ }
3732
+ .ez-library-picker-foot {
3733
+ display: flex;
3734
+ align-items: center;
3735
+ gap: 8px;
3736
+ padding: 12px 16px 12px 24px;
3737
+ border-top: 1px solid var(--border);
3738
+ }
3739
+ .ez-library-picker-count {
3740
+ margin: 0 auto 0 0;
3741
+ color: var(--muted-foreground);
3742
+ font-size: 13px;
3743
+ font-variant-numeric: tabular-nums;
3744
+ }
3745
+ .ez-library-picker-foot .ez-dialog-go:disabled {
3746
+ opacity: 0.4;
3747
+ cursor: default;
3748
+ }
3749
+ .ez-library-detail {
3750
+ width: min(1120px, calc(100vw - 48px));
3751
+ max-width: none;
3752
+ height: min(760px, calc(100vh - 48px));
3753
+ max-height: none;
3754
+ padding: 0;
3755
+ border: 0;
3756
+ border-radius: 14px;
3757
+ overflow: hidden;
3758
+ background: var(--panel);
3759
+ color: var(--foreground);
3760
+ box-shadow:
3761
+ 0 0 0 1px oklch(0% 0 0 / 0.06),
3762
+ 0 24px 64px oklch(0% 0 0 / 0.24),
3763
+ 0 4px 12px oklch(0% 0 0 / 0.08);
3764
+ animation: ez-menu-in var(--t-view) var(--ease-out) both;
3765
+ }
3766
+ .ez-library-detail::backdrop {
3767
+ background: oklch(0% 0 0 / 0.32);
3768
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
3769
+ }
3770
+ .ez-library-detail-body {
3771
+ display: grid;
3772
+ grid-template-columns: minmax(0, 1fr) 340px;
3773
+ height: 100%;
3774
+ }
3775
+ .ez-library-detail-stage {
3776
+ position: relative;
3777
+ display: flex;
3778
+ align-items: center;
3779
+ justify-content: center;
3780
+ min-height: 0;
3781
+ padding: 28px;
3782
+ background: var(--paper-sunken);
3783
+ }
3784
+ .ez-library-detail-media {
3785
+ display: block;
3786
+ max-width: 100%;
3787
+ max-height: 100%;
3788
+ border-radius: 4px;
3789
+ outline: 1px solid var(--image-outline);
3790
+ outline-offset: -1px;
3791
+ }
3792
+ .ez-library-detail-missing {
3793
+ color: var(--muted-foreground);
3794
+ font-size: 13px;
3795
+ }
3796
+ .ez-library-detail-step {
3797
+ position: absolute;
3798
+ top: 50%;
3799
+ display: grid;
3800
+ place-items: center;
3801
+ width: 36px;
3802
+ height: 36px;
3803
+ margin-top: -18px;
3804
+ padding: 0;
3805
+ border: 0;
3806
+ border-radius: 50%;
3807
+ background: oklch(100% 0 0 / 0.92);
3808
+ color: var(--foreground);
3809
+ box-shadow: 0 0 0 1px oklch(0% 0 0 / 0.06), 0 2px 8px oklch(0% 0 0 / 0.12);
3810
+ cursor: pointer;
3811
+ opacity: 0;
3812
+ transition: opacity var(--t-pop) var(--ease-out);
3813
+ }
3814
+ .ez-library-detail-step[data-side=prev] {
3815
+ left: 14px;
3816
+ }
3817
+ .ez-library-detail-step[data-side=next] {
3818
+ right: 14px;
3819
+ }
3820
+ .ez-library-detail-stage:hover .ez-library-detail-step,
3821
+ .ez-library-detail-step:focus-visible {
3822
+ opacity: 1;
3823
+ }
3824
+ .ez-library-detail-step[hidden] {
3825
+ display: none;
3826
+ }
3827
+ .ez-library-detail-side {
3828
+ display: flex;
3829
+ flex-direction: column;
3830
+ gap: 16px;
3831
+ min-height: 0;
3832
+ padding: 18px 20px 16px;
3833
+ overflow-y: auto;
3834
+ }
3835
+ .ez-library-detail-head {
3836
+ display: flex;
3837
+ align-items: flex-start;
3838
+ gap: 8px;
3839
+ }
3840
+ .ez-library-detail-title {
3841
+ display: inline-flex;
3842
+ flex: 1;
3843
+ min-width: 0;
3844
+ padding-top: 3px;
3845
+ color: var(--foreground);
3846
+ font-size: 15px;
3847
+ font-weight: 600;
3848
+ line-height: 1.4;
3849
+ text-decoration: none;
3850
+ }
3851
+ .ez-library-detail-title span {
3852
+ display: -webkit-box;
3853
+ overflow: hidden;
3854
+ overflow-wrap: anywhere;
3855
+ -webkit-box-orient: vertical;
3856
+ -webkit-line-clamp: 2;
3857
+ }
3858
+ .ez-library-detail-title[href]:hover span {
3859
+ text-decoration: underline;
3860
+ text-underline-offset: 2px;
3861
+ }
3862
+ .ez-library-detail-close {
3863
+ display: grid;
3864
+ flex-shrink: 0;
3865
+ place-items: center;
3866
+ width: 28px;
3867
+ height: 28px;
3868
+ padding: 0;
3869
+ border: 0;
3870
+ border-radius: 7px;
3871
+ background: transparent;
3872
+ color: var(--ink-faint);
3873
+ cursor: pointer;
3874
+ }
3875
+ .ez-library-detail-close:hover {
3876
+ background: var(--muted);
3877
+ color: var(--foreground);
3878
+ }
3879
+ .ez-library-detail-meta {
3880
+ margin: -12px 0 0;
3881
+ color: var(--muted-foreground);
3882
+ font-size: 12px;
3883
+ font-variant-numeric: tabular-nums;
3884
+ }
3885
+ .ez-library-detail-notice {
3886
+ margin: 0;
3887
+ padding: 8px 10px;
3888
+ border-radius: var(--radius);
3889
+ background: var(--muted);
3890
+ color: var(--muted-foreground);
3891
+ font-size: 12px;
3892
+ line-height: 1.5;
3893
+ }
3894
+ .ez-library-detail-notice[hidden] {
3895
+ display: none;
3896
+ }
3897
+ .ez-library-field {
3898
+ display: grid;
3899
+ gap: 6px;
3900
+ }
3901
+ .ez-library-field-label {
3902
+ color: var(--muted-foreground);
3903
+ font-size: 12px;
3904
+ font-weight: 500;
3905
+ }
3906
+ .ez-library-combo {
3907
+ position: relative;
3908
+ }
3909
+ .ez-library-tag-box,
3910
+ .ez-library-note {
3911
+ width: 100%;
3912
+ border: 1px solid var(--border);
3913
+ border-radius: var(--radius);
3914
+ background: var(--panel);
3915
+ transition: border-color var(--t-pop) var(--ease-out), box-shadow var(--t-pop) var(--ease-out);
3916
+ }
3917
+ .ez-library-tag-box {
3918
+ display: flex;
3919
+ flex-wrap: wrap;
3920
+ align-items: center;
3921
+ gap: 4px;
3922
+ min-height: 36px;
3923
+ padding: 5px 6px;
3924
+ cursor: text;
3925
+ }
3926
+ .ez-library-tag-box:focus-within,
3927
+ .ez-library-note:focus {
3928
+ border-color: var(--ring);
3929
+ box-shadow: 0 0 0 3px var(--ring-halo);
3930
+ }
3931
+ .ez-library-chips {
3932
+ display: contents;
3933
+ }
3934
+ .ez-library-chip {
3935
+ display: inline-flex;
3936
+ align-items: center;
3937
+ gap: 3px;
3938
+ max-width: 200px;
3939
+ height: 22px;
3940
+ padding: 0 6px;
3941
+ border: 0;
3942
+ border-radius: 4px;
3943
+ background: var(--tag);
3944
+ color: var(--tag-ink);
3945
+ font-family: inherit;
3946
+ font-size: 12px;
3947
+ font-weight: 500;
3948
+ white-space: nowrap;
3949
+ cursor: pointer;
3950
+ }
3951
+ .ez-library-chip > span:first-child {
3952
+ overflow: hidden;
3953
+ text-overflow: ellipsis;
3954
+ }
3955
+ .ez-library-chip-x {
3956
+ font-size: 13px;
3957
+ line-height: 1;
3958
+ opacity: 0.6;
3959
+ }
3960
+ .ez-library-chip:hover .ez-library-chip-x {
3961
+ opacity: 1;
3962
+ }
3963
+ .ez-library-tag-box input {
3964
+ flex: 1;
3965
+ min-width: 56px;
3966
+ height: 24px;
3967
+ padding: 0 2px;
3968
+ border: 0;
3969
+ outline: none;
3970
+ background: transparent;
3971
+ color: var(--foreground);
3972
+ font: inherit;
3973
+ font-size: 13px;
3974
+ }
3975
+ .ez-library-tag-box input::placeholder,
3976
+ .ez-library-note::placeholder {
3977
+ color: var(--ink-ghost);
3978
+ }
3979
+ .ez-library-tag-options {
3980
+ position: absolute;
3981
+ top: calc(100% + 4px);
3982
+ left: 0;
3983
+ z-index: 1;
3984
+ min-width: 200px;
3985
+ max-width: 100%;
3986
+ margin: 0;
3987
+ padding: 4px;
3988
+ border: 1px solid var(--border);
3989
+ border-radius: 10px;
3990
+ background: var(--panel);
3991
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
3992
+ list-style: none;
3993
+ animation: ez-menu-in var(--t-menu) var(--ease-out) both;
3994
+ transform-origin: top left;
3995
+ }
3996
+ .ez-library-tag-options[hidden] {
3997
+ display: none;
3998
+ }
3999
+ .ez-library-tag-options li {
4000
+ padding: 5px 8px;
4001
+ border-radius: 6px;
4002
+ font-size: 13px;
4003
+ cursor: pointer;
4004
+ }
4005
+ .ez-library-tag-options li:hover,
4006
+ .ez-library-tag-options li[aria-selected=true] {
4007
+ background: var(--muted);
4008
+ }
4009
+ .ez-library-note {
4010
+ display: block;
4011
+ min-height: 96px;
4012
+ padding: 7px 9px;
4013
+ outline: none;
4014
+ color: var(--foreground);
4015
+ font: inherit;
4016
+ font-size: 13px;
4017
+ line-height: 1.55;
4018
+ resize: vertical;
4019
+ }
4020
+ .ez-library-detail-foot {
4021
+ display: flex;
4022
+ align-items: center;
4023
+ justify-content: space-between;
4024
+ gap: 12px;
4025
+ margin-top: auto;
4026
+ padding-top: 4px;
4027
+ }
4028
+ .ez-library-detail-remove {
4029
+ display: inline-flex;
4030
+ align-items: center;
4031
+ gap: 6px;
4032
+ height: 32px;
4033
+ margin-left: -8px;
4034
+ padding: 0 10px 0 8px;
4035
+ border: 0;
4036
+ border-radius: 7px;
4037
+ background: transparent;
4038
+ color: var(--muted-foreground);
4039
+ font-family: inherit;
4040
+ font-size: 13px;
4041
+ font-weight: 500;
4042
+ cursor: pointer;
4043
+ }
4044
+ .ez-library-detail-remove:hover {
4045
+ background: color-mix(in oklab, var(--danger) 8%, transparent);
4046
+ color: var(--danger);
4047
+ }
4048
+ .ez-library-detail-status {
4049
+ margin: 0;
4050
+ color: var(--ink-faint);
4051
+ font-size: 12px;
4052
+ }
4053
+ .ez-library-detail-status[data-tone=error] {
4054
+ color: var(--danger);
4055
+ }
4056
+ @media (prefers-reduced-motion: reduce) {
4057
+ .ez-library-detail {
4058
+ animation-name: ez-fade-in;
4059
+ }
4060
+ }