@cychien/ezdesign 0.8.1 → 0.9.2

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.
package/dist/shell.css CHANGED
@@ -20,7 +20,9 @@
20
20
  --radius: 8px;
21
21
  --mark: #e56d41;
22
22
  --mark-foreground: #fff;
23
+ --arrange: #0d99ff;
23
24
  --premium: #d6a21e;
25
+ --app-accent: #ee7a2a;
24
26
  --attach: #cee7c1;
25
27
  --attach-ink: #3d5c36;
26
28
  --ref: #f4d3e2;
@@ -37,6 +39,10 @@
37
39
  --code-fill: rgba(180, 72, 42, 0.09);
38
40
  --update-ink: #2566ba;
39
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);
40
46
  }
41
47
  * {
42
48
  box-sizing: border-box;
@@ -65,6 +71,7 @@ button {
65
71
  outline-offset: 0;
66
72
  }
67
73
  #ez-shell {
74
+ position: relative;
68
75
  display: flex;
69
76
  height: 100vh;
70
77
  }
@@ -108,7 +115,7 @@ button {
108
115
  min-width: 0;
109
116
  scrollbar-gutter: stable;
110
117
  }
111
- .ez-canvas {
118
+ .ez-grid {
112
119
  width: fit-content;
113
120
  margin: 0 auto;
114
121
  display: flex;
@@ -116,7 +123,11 @@ button {
116
123
  align-items: flex-start;
117
124
  gap: 26px;
118
125
  }
119
- .ez-stage.ez-multi .ez-canvas {
126
+ .ez-grid[hidden],
127
+ .ez-seg[hidden] {
128
+ display: none;
129
+ }
130
+ .ez-stage.ez-multi .ez-grid {
120
131
  position: relative;
121
132
  display: block;
122
133
  margin: 0;
@@ -139,7 +150,7 @@ button {
139
150
  .ez-card.ez-card-drag .ez-screen {
140
151
  box-shadow: 0 18px 44px rgba(23, 23, 23, 0.16);
141
152
  }
142
- .ez-canvas[data-settle] .ez-card {
153
+ .ez-grid[data-settle] .ez-card {
143
154
  transition: transform 0.22s cubic-bezier(0.2, 0, 0, 1);
144
155
  }
145
156
  .ez-drop-hint {
@@ -236,6 +247,14 @@ body.ez-arranging .ez-frame {
236
247
  border: none;
237
248
  background: #fff;
238
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
+ }
239
258
  .ez-sidebar {
240
259
  position: relative;
241
260
  flex-shrink: 0;
@@ -245,11 +264,107 @@ body.ez-arranging .ez-frame {
245
264
  flex-direction: column;
246
265
  min-height: 0;
247
266
  }
248
- .ez-resizer {
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: "";
249
312
  position: absolute;
250
- inset-block: 0;
251
- left: -4px;
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;
252
366
  width: 9px;
367
+ margin-inline: -4px -5px;
253
368
  z-index: 4;
254
369
  cursor: col-resize;
255
370
  touch-action: none;
@@ -286,10 +401,15 @@ body.ez-arranging .ez-frame {
286
401
  align-items: center;
287
402
  gap: 6px;
288
403
  }
289
- .ez-brand {
290
- font-weight: 600;
291
- font-size: 14px;
292
- letter-spacing: -0.03em;
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;
293
413
  }
294
414
  .ez-version {
295
415
  font-size: 11px;
@@ -396,6 +516,9 @@ body.ez-arranging .ez-frame {
396
516
  .ez-badge.ez-online::before {
397
517
  background: oklch(62% 0.15 150);
398
518
  }
519
+ .ez-badge.ez-offline::before {
520
+ background: var(--danger);
521
+ }
399
522
  .ez-badge.ez-working::before {
400
523
  background: oklch(70% 0.16 70);
401
524
  animation: ez-pulse 1.2s ease-in-out infinite;
@@ -506,7 +629,9 @@ body.ez-arranging .ez-frame {
506
629
  .ez-shown[data-open] .ez-menu,
507
630
  .ez-config[data-open] .ez-menu,
508
631
  .ez-agent[data-open] .ez-menu,
509
- .ez-update-hint[data-open] .ez-menu {
632
+ .ez-update-hint[data-open] .ez-menu,
633
+ .ez-account[data-open] .ez-menu,
634
+ .ez-canvas-menu-wrap[data-open] .ez-menu {
510
635
  display: flex;
511
636
  }
512
637
  .ez-menu-right {
@@ -519,6 +644,13 @@ body.ez-arranging .ez-frame {
519
644
  max-height: 60vh;
520
645
  overflow-y: auto;
521
646
  }
647
+ .ez-account-menu {
648
+ top: auto;
649
+ left: auto;
650
+ bottom: 0;
651
+ right: calc(100% + 8px);
652
+ min-width: 200px;
653
+ }
522
654
  .ez-menu-group {
523
655
  display: flex;
524
656
  flex-direction: column;
@@ -679,14 +811,55 @@ body.ez-arranging .ez-frame {
679
811
  .ez-notices > *:not([hidden]) ~ *:not([hidden]) {
680
812
  border-top: 1px solid var(--border);
681
813
  }
682
- .ez-banner {
683
- background: oklch(97% 0.04 85);
684
- color: oklch(45% 0.1 70);
685
- border-top: 1px solid oklch(90% 0.06 85);
686
- font-size: 12.5px;
687
- line-height: 1.6;
688
- padding: 10px 14px;
814
+ .ez-status {
815
+ position: absolute;
816
+ top: 5px;
817
+ left: calc((100% - 44px) / 2);
818
+ z-index: 40;
819
+ display: flex;
820
+ align-items: center;
821
+ gap: 8px;
822
+ max-width: calc(100% - 44px - 32px);
823
+ padding: 7px 14px;
824
+ border-radius: 999px;
825
+ background: var(--ink);
826
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 6px 20px oklch(0% 0 0 / 0.3);
827
+ color: #fff;
828
+ font-size: 12px;
829
+ line-height: 1.5;
830
+ white-space: nowrap;
831
+ transform: translateX(-50%);
832
+ animation: ez-toast-in var(--t-view) var(--ease-out) both;
833
+ }
834
+ .ez-status[hidden] {
835
+ display: none;
836
+ }
837
+ .ez-status[data-alert]::before {
838
+ content: "";
689
839
  flex-shrink: 0;
840
+ width: 6px;
841
+ height: 6px;
842
+ border-radius: 50%;
843
+ background: oklch(70% 0.16 70);
844
+ }
845
+ .ez-status-title {
846
+ font-weight: 600;
847
+ }
848
+ .ez-status-code {
849
+ padding: 1px 5px;
850
+ border-radius: 4px;
851
+ background: oklch(100% 0 0 / 0.14);
852
+ font-family:
853
+ ui-monospace,
854
+ SFMono-Regular,
855
+ Menlo,
856
+ monospace;
857
+ font-size: 0.92em;
858
+ }
859
+ @media (prefers-reduced-motion: reduce) {
860
+ .ez-status {
861
+ animation-name: ez-fade-in;
862
+ }
690
863
  }
691
864
  .ez-update {
692
865
  position: relative;
@@ -1108,7 +1281,7 @@ body.ez-arranging .ez-frame {
1108
1281
  cursor: default;
1109
1282
  }
1110
1283
  .ez-qi-act.ez-qi-del:hover:not(:disabled) {
1111
- color: oklch(52% 0.2 25);
1284
+ color: var(--danger);
1112
1285
  }
1113
1286
  .ez-qi-comment {
1114
1287
  font-size: 13px;
@@ -2105,7 +2278,7 @@ body.ez-arranging .ez-frame {
2105
2278
  .ez-strip[hidden] {
2106
2279
  display: none;
2107
2280
  }
2108
- .ez-strip {
2281
+ .ez-stage-dock {
2109
2282
  position: absolute;
2110
2283
  left: 50%;
2111
2284
  bottom: 12px;
@@ -2117,7 +2290,15 @@ body.ez-arranging .ez-frame {
2117
2290
  gap: 8px;
2118
2291
  max-width: calc(100% - 24px);
2119
2292
  }
2120
- .ez-strip-pill {
2293
+ .ez-strip {
2294
+ display: flex;
2295
+ flex-direction: column;
2296
+ align-items: center;
2297
+ gap: 8px;
2298
+ max-width: 100%;
2299
+ }
2300
+ .ez-strip-pill,
2301
+ .ez-pick-pill {
2121
2302
  display: flex;
2122
2303
  align-items: center;
2123
2304
  gap: 8px;
@@ -2134,6 +2315,35 @@ body.ez-arranging .ez-frame {
2134
2315
  flex-shrink: 0;
2135
2316
  color: var(--explore-on-ink);
2136
2317
  }
2318
+ .ez-pick-pill[hidden] {
2319
+ display: none;
2320
+ }
2321
+ .ez-pick-pill {
2322
+ white-space: nowrap;
2323
+ }
2324
+ .ez-pick-pill > svg {
2325
+ flex-shrink: 0;
2326
+ color: var(--ref-accent);
2327
+ }
2328
+ .ez-pick-pill-text {
2329
+ overflow: hidden;
2330
+ text-overflow: ellipsis;
2331
+ min-width: 0;
2332
+ }
2333
+ .ez-pick-pill-cancel {
2334
+ flex-shrink: 0;
2335
+ padding: 3px 9px;
2336
+ border: 0;
2337
+ border-radius: 999px;
2338
+ background: oklch(100% 0 0 / 0.14);
2339
+ color: inherit;
2340
+ font: inherit;
2341
+ font-size: 11.5px;
2342
+ cursor: pointer;
2343
+ }
2344
+ .ez-pick-pill-cancel:hover {
2345
+ background: oklch(100% 0 0 / 0.24);
2346
+ }
2137
2347
  .ez-strip-chips {
2138
2348
  display: flex;
2139
2349
  align-items: center;
@@ -2480,3 +2690,1374 @@ body.ez-arranging .ez-frame {
2480
2690
  animation-duration: var(--t-pop);
2481
2691
  }
2482
2692
  }
2693
+ .ez-announce {
2694
+ position: absolute;
2695
+ right: 12px;
2696
+ bottom: 12px;
2697
+ z-index: 4;
2698
+ width: 288px;
2699
+ max-width: calc(100% - 24px);
2700
+ padding: 6px 6px 14px;
2701
+ border-radius: 14px;
2702
+ background: var(--ink);
2703
+ color: #fff;
2704
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.08), 0 12px 32px oklch(0% 0 0 / 0.24);
2705
+ animation: ez-rise 0.16s ease-out;
2706
+ }
2707
+ .ez-stage[hidden] ~ .ez-announce {
2708
+ bottom: 52px;
2709
+ }
2710
+ .ez-stage-dock:has(> :not([hidden])) ~ .ez-announce {
2711
+ display: none;
2712
+ }
2713
+ .ez-announce-media {
2714
+ display: block;
2715
+ width: 100%;
2716
+ aspect-ratio: 16 / 10;
2717
+ object-fit: cover;
2718
+ border-radius: 8px;
2719
+ background: oklch(100% 0 0 / 0.06);
2720
+ }
2721
+ .ez-announce-text {
2722
+ padding: 12px 8px 0;
2723
+ }
2724
+ .ez-announce-title {
2725
+ margin: 0;
2726
+ font-size: 14px;
2727
+ font-weight: 600;
2728
+ line-height: 1.4;
2729
+ }
2730
+ .ez-announce-body {
2731
+ display: -webkit-box;
2732
+ -webkit-box-orient: vertical;
2733
+ -webkit-line-clamp: 3;
2734
+ overflow: hidden;
2735
+ margin: 4px 0 0;
2736
+ color: oklch(100% 0 0 / 0.62);
2737
+ font-size: 12.5px;
2738
+ line-height: 1.55;
2739
+ text-wrap: pretty;
2740
+ }
2741
+ .ez-announce-go {
2742
+ display: inline-flex;
2743
+ margin-top: 12px;
2744
+ padding: 6px 12px;
2745
+ border-radius: 7px;
2746
+ background: #fff;
2747
+ color: var(--ink);
2748
+ font-size: 12px;
2749
+ font-weight: 600;
2750
+ text-decoration: none;
2751
+ transition: background 0.12s ease;
2752
+ }
2753
+ .ez-announce-go:hover {
2754
+ background: oklch(100% 0 0 / 0.86);
2755
+ }
2756
+ .ez-announce-x {
2757
+ position: absolute;
2758
+ top: 12px;
2759
+ right: 12px;
2760
+ display: grid;
2761
+ place-items: center;
2762
+ width: 24px;
2763
+ height: 24px;
2764
+ padding: 0;
2765
+ border: none;
2766
+ border-radius: 50%;
2767
+ background: oklch(0% 0 0 / 0.42);
2768
+ color: #fff;
2769
+ backdrop-filter: blur(8px);
2770
+ cursor: pointer;
2771
+ transition: background 0.12s ease;
2772
+ }
2773
+ .ez-announce-x:hover {
2774
+ background: oklch(0% 0 0 / 0.62);
2775
+ }
2776
+ .ez-announce-go:focus-visible,
2777
+ .ez-announce-x:focus-visible {
2778
+ outline: 2px solid oklch(100% 0 0 / 0.7);
2779
+ outline-offset: 2px;
2780
+ }
2781
+ @media (prefers-reduced-motion: reduce) {
2782
+ .ez-announce {
2783
+ animation: none;
2784
+ }
2785
+ }
2786
+ .ez-stage-wrap.ez-tabbed {
2787
+ flex-direction: column;
2788
+ }
2789
+ .ez-stage-wrap.ez-tabbed .ez-shown {
2790
+ top: 52px;
2791
+ }
2792
+ .ez-stage[hidden],
2793
+ .ez-stage[hidden] ~ .ez-shown {
2794
+ display: none;
2795
+ }
2796
+ .ez-tabs-bar {
2797
+ display: flex;
2798
+ align-items: center;
2799
+ gap: 8px;
2800
+ height: 42px;
2801
+ flex-shrink: 0;
2802
+ padding: 0 10px 0 0;
2803
+ border-bottom: 1px solid var(--border);
2804
+ background: var(--background);
2805
+ }
2806
+ .ez-tabs {
2807
+ display: flex;
2808
+ align-self: stretch;
2809
+ flex: 1;
2810
+ min-width: 0;
2811
+ overflow-x: auto;
2812
+ scrollbar-width: none;
2813
+ }
2814
+ .ez-tab {
2815
+ position: relative;
2816
+ display: inline-flex;
2817
+ align-items: center;
2818
+ max-width: 220px;
2819
+ margin-right: -1px;
2820
+ padding: 0 14px;
2821
+ --tab-bg: var(--background);
2822
+ background: var(--tab-bg);
2823
+ font-size: 12.5px;
2824
+ font-weight: 500;
2825
+ color: var(--muted-foreground);
2826
+ white-space: nowrap;
2827
+ cursor: pointer;
2828
+ user-select: none;
2829
+ flex-shrink: 0;
2830
+ transition:
2831
+ background-color var(--t-pop) var(--ease-out),
2832
+ box-shadow var(--t-pop) var(--ease-out),
2833
+ color var(--t-pop) var(--ease-out);
2834
+ }
2835
+ .ez-tab:hover {
2836
+ z-index: 1;
2837
+ --tab-bg: color-mix(in srgb, var(--panel) 55%, var(--background));
2838
+ color: var(--foreground);
2839
+ box-shadow: inset 1px 0 color-mix(in srgb, var(--border) 85%, transparent), inset -1px 0 color-mix(in srgb, var(--border) 85%, transparent);
2840
+ }
2841
+ .ez-tab[aria-selected=true] {
2842
+ z-index: 2;
2843
+ --tab-bg: var(--panel);
2844
+ color: var(--foreground);
2845
+ box-shadow: inset 1px 0 var(--border), inset -1px 0 var(--border);
2846
+ }
2847
+ .ez-tab-label {
2848
+ display: flex;
2849
+ align-items: center;
2850
+ min-width: 0;
2851
+ }
2852
+ .ez-tab-label svg {
2853
+ flex-shrink: 0;
2854
+ translate: 0 0.5px;
2855
+ margin-right: 6px;
2856
+ color: var(--app-accent);
2857
+ }
2858
+ .ez-tab-label svg path {
2859
+ stroke-width: 1.9;
2860
+ }
2861
+ .ez-tab-name {
2862
+ overflow: hidden;
2863
+ text-overflow: ellipsis;
2864
+ }
2865
+ .ez-tab-close {
2866
+ position: absolute;
2867
+ top: 50%;
2868
+ right: 6px;
2869
+ translate: 0 -50%;
2870
+ display: grid;
2871
+ place-items: center;
2872
+ width: 18px;
2873
+ height: 18px;
2874
+ padding: 0;
2875
+ border: none;
2876
+ border-radius: 5px;
2877
+ background: var(--tab-bg);
2878
+ color: var(--ink-faint);
2879
+ font-size: 14px;
2880
+ line-height: 1;
2881
+ cursor: pointer;
2882
+ opacity: 0;
2883
+ transition: background-color var(--t-pop) var(--ease-out), opacity var(--t-pop) var(--ease-out);
2884
+ }
2885
+ .ez-tab-close::before {
2886
+ content: "";
2887
+ position: absolute;
2888
+ inset: 0 100% 0 auto;
2889
+ width: 14px;
2890
+ background:
2891
+ linear-gradient(
2892
+ to right,
2893
+ transparent,
2894
+ var(--tab-bg));
2895
+ pointer-events: none;
2896
+ }
2897
+ .ez-tab:hover .ez-tab-close,
2898
+ .ez-tab-close:focus-visible {
2899
+ opacity: 1;
2900
+ }
2901
+ .ez-tab-close:hover {
2902
+ background: color-mix(in srgb, var(--tab-bg), var(--foreground) 8%);
2903
+ color: var(--foreground);
2904
+ }
2905
+ .ez-tab[data-renaming] .ez-tab-name {
2906
+ text-overflow: clip;
2907
+ cursor: text;
2908
+ outline: none;
2909
+ }
2910
+ .ez-tab[data-renaming] .ez-tab-close {
2911
+ display: none;
2912
+ }
2913
+ .ez-tabs-tail {
2914
+ display: flex;
2915
+ align-items: center;
2916
+ flex-shrink: 0;
2917
+ }
2918
+ .ez-tab-new,
2919
+ .ez-canvas-menu {
2920
+ display: grid;
2921
+ place-items: center;
2922
+ width: 28px;
2923
+ height: 28px;
2924
+ padding: 0;
2925
+ border: none;
2926
+ border-radius: 7px;
2927
+ background: transparent;
2928
+ color: var(--muted-foreground);
2929
+ font-family: inherit;
2930
+ cursor: pointer;
2931
+ }
2932
+ .ez-tab-new path {
2933
+ stroke-width: 2.25;
2934
+ }
2935
+ .ez-canvas-menu path {
2936
+ stroke-width: 1.75;
2937
+ }
2938
+ .ez-tab-new:hover,
2939
+ .ez-canvas-menu:hover,
2940
+ .ez-canvas-menu-wrap[data-open] .ez-canvas-menu {
2941
+ background: var(--muted);
2942
+ color: var(--foreground);
2943
+ }
2944
+ .ez-canvas-menu-wrap {
2945
+ position: relative;
2946
+ }
2947
+ .ez-canvas-menu-list {
2948
+ min-width: 200px;
2949
+ max-width: 320px;
2950
+ z-index: 20;
2951
+ }
2952
+ .ez-canvas-menu-item {
2953
+ position: relative;
2954
+ display: flex;
2955
+ align-items: center;
2956
+ }
2957
+ .ez-canvas-menu-item:hover .ez-canvas-menu-open {
2958
+ background: var(--muted);
2959
+ }
2960
+ .ez-canvas-menu-open {
2961
+ flex: 1;
2962
+ min-width: 0;
2963
+ padding-right: 40px;
2964
+ }
2965
+ .ez-canvas-menu-open .ez-menu-name {
2966
+ min-width: 0;
2967
+ overflow: hidden;
2968
+ text-overflow: ellipsis;
2969
+ white-space: nowrap;
2970
+ }
2971
+ .ez-canvas-menu-item[data-archived] .ez-menu-name {
2972
+ color: var(--muted-foreground);
2973
+ }
2974
+ .ez-canvas-menu-delete {
2975
+ position: absolute;
2976
+ top: 50%;
2977
+ right: 8px;
2978
+ translate: 0 -50%;
2979
+ padding: 0;
2980
+ border: none;
2981
+ background: transparent;
2982
+ color: var(--muted-foreground);
2983
+ font-family: inherit;
2984
+ font-size: 12px;
2985
+ cursor: pointer;
2986
+ visibility: hidden;
2987
+ }
2988
+ .ez-canvas-menu-item:is(:hover, :has(:focus-visible)) .ez-canvas-menu-delete {
2989
+ visibility: visible;
2990
+ }
2991
+ .ez-canvas-menu-delete:hover,
2992
+ .ez-canvas-menu-delete:focus-visible {
2993
+ color: var(--foreground);
2994
+ }
2995
+ .ez-canvas-menu-empty {
2996
+ padding: 6px 8px;
2997
+ font-size: 12px;
2998
+ color: var(--muted-foreground);
2999
+ }
3000
+ .ez-dialog {
3001
+ width: min(400px, calc(100vw - 32px));
3002
+ max-width: none;
3003
+ padding: 0;
3004
+ border: 1px solid var(--border);
3005
+ border-radius: 12px;
3006
+ background: var(--panel);
3007
+ color: var(--foreground);
3008
+ box-shadow: 0 24px 64px oklch(0% 0 0 / 0.16), 0 2px 8px oklch(0% 0 0 / 0.06);
3009
+ animation: ez-menu-in var(--t-menu) var(--ease-out) both;
3010
+ }
3011
+ .ez-dialog::backdrop {
3012
+ background: oklch(0% 0 0 / 0.18);
3013
+ animation: ez-fade-in var(--t-menu) var(--ease-out) both;
3014
+ }
3015
+ .ez-dialog-card {
3016
+ padding: 20px;
3017
+ }
3018
+ .ez-dialog-title {
3019
+ margin: 0;
3020
+ font-size: 16px;
3021
+ font-weight: 600;
3022
+ line-height: 1.4;
3023
+ }
3024
+ .ez-dialog-body {
3025
+ margin: 8px 0 0;
3026
+ font-size: 14px;
3027
+ line-height: 1.55;
3028
+ color: var(--muted-foreground);
3029
+ }
3030
+ .ez-dialog-actions {
3031
+ display: flex;
3032
+ justify-content: flex-end;
3033
+ gap: 8px;
3034
+ margin-top: 20px;
3035
+ }
3036
+ .ez-dialog-cancel,
3037
+ .ez-dialog-go {
3038
+ height: 36px;
3039
+ padding: 0 16px;
3040
+ border-radius: 7px;
3041
+ font-family: inherit;
3042
+ font-size: 14px;
3043
+ font-weight: 600;
3044
+ cursor: pointer;
3045
+ }
3046
+ .ez-dialog-cancel {
3047
+ border: 1px solid var(--border);
3048
+ background: var(--panel);
3049
+ color: var(--foreground);
3050
+ }
3051
+ .ez-dialog-cancel:hover {
3052
+ background: var(--muted);
3053
+ }
3054
+ .ez-dialog-go {
3055
+ border: 1px solid var(--primary);
3056
+ background: var(--primary);
3057
+ color: var(--primary-foreground);
3058
+ box-shadow: inset 0 1px 0 0 oklch(100% 0 0 / 0.14);
3059
+ }
3060
+ .ez-dialog-go:hover {
3061
+ opacity: 0.88;
3062
+ }
3063
+ .ez-board {
3064
+ position: relative;
3065
+ flex: 1;
3066
+ min-height: 0;
3067
+ overflow: clip;
3068
+ background: var(--paper-sunken);
3069
+ outline: none;
3070
+ touch-action: none;
3071
+ }
3072
+ .ez-board[hidden] {
3073
+ display: none;
3074
+ }
3075
+ .ez-board.ez-space {
3076
+ cursor: grab;
3077
+ }
3078
+ .ez-board.ez-panning {
3079
+ cursor: grabbing;
3080
+ }
3081
+ .ez-board-world {
3082
+ position: absolute;
3083
+ left: 0;
3084
+ top: 0;
3085
+ transform-origin: 0 0;
3086
+ }
3087
+ .ez-board-frame {
3088
+ position: absolute;
3089
+ left: 0;
3090
+ top: 0;
3091
+ background: #fff;
3092
+ box-shadow: 0 calc(4px / var(--ez-zoom, 1)) calc(18px / var(--ez-zoom, 1)) oklch(0% 0 0 / 0.07);
3093
+ outline: calc(1px / var(--ez-zoom, 1)) solid var(--border);
3094
+ outline-offset: calc(-0.5px / var(--ez-zoom, 1));
3095
+ }
3096
+ .ez-board-frame.ez-live,
3097
+ .ez-board-frame[aria-selected=true] {
3098
+ outline-color: var(--arrange);
3099
+ }
3100
+ .ez-board-heads {
3101
+ position: absolute;
3102
+ left: 0;
3103
+ top: 0;
3104
+ pointer-events: none;
3105
+ }
3106
+ .ez-board-frame-head {
3107
+ position: absolute;
3108
+ left: 0;
3109
+ top: 0;
3110
+ display: flex;
3111
+ padding-bottom: 6px;
3112
+ font-size: 12px;
3113
+ line-height: 16px;
3114
+ white-space: nowrap;
3115
+ cursor: default;
3116
+ user-select: none;
3117
+ pointer-events: auto;
3118
+ }
3119
+ .ez-board-frame-head.ez-selected .ez-board-frame-title {
3120
+ color: var(--ink);
3121
+ }
3122
+ .ez-picking-frames .ez-board-frame-head {
3123
+ cursor: pointer;
3124
+ }
3125
+ .ez-board-frame.ez-pick-target {
3126
+ outline: calc(2px / var(--ez-zoom, 1)) solid var(--ref-accent);
3127
+ outline-offset: calc(-1px / var(--ez-zoom, 1));
3128
+ }
3129
+ .ez-picking-frames .ez-board-frame-head:hover .ez-board-frame-title {
3130
+ color: var(--ref-accent);
3131
+ }
3132
+ .ez-guides {
3133
+ position: absolute;
3134
+ left: 0;
3135
+ top: 0;
3136
+ z-index: 100000;
3137
+ pointer-events: none;
3138
+ }
3139
+ .ez-guide {
3140
+ position: absolute;
3141
+ left: 0;
3142
+ top: 0;
3143
+ background: var(--arrange);
3144
+ }
3145
+ .ez-guide[data-axis=x] {
3146
+ width: calc(1px / var(--ez-zoom, 1));
3147
+ margin-left: calc(-0.5px / var(--ez-zoom, 1));
3148
+ }
3149
+ .ez-guide[data-axis=y] {
3150
+ height: calc(1px / var(--ez-zoom, 1));
3151
+ margin-top: calc(-0.5px / var(--ez-zoom, 1));
3152
+ }
3153
+ .ez-board.ez-arranging,
3154
+ .ez-board.ez-arranging .ez-board-frame,
3155
+ .ez-board.ez-arranging .ez-board-frame-head {
3156
+ cursor: grabbing;
3157
+ user-select: none;
3158
+ }
3159
+ .ez-board-frame-title {
3160
+ max-width: 100%;
3161
+ overflow: hidden;
3162
+ text-overflow: ellipsis;
3163
+ font-weight: 500;
3164
+ color: var(--foreground);
3165
+ }
3166
+ .ez-board-iframe {
3167
+ display: block;
3168
+ width: 100%;
3169
+ height: 100%;
3170
+ border: 0;
3171
+ background: #fff;
3172
+ pointer-events: none;
3173
+ }
3174
+ .ez-board.ez-annotating .ez-board-iframe,
3175
+ .ez-picking .ez-board-iframe,
3176
+ .ez-board-frame.ez-live .ez-board-iframe {
3177
+ pointer-events: auto;
3178
+ }
3179
+ .ez-board.ez-moving .ez-board-iframe,
3180
+ .ez-board.ez-space .ez-board-iframe,
3181
+ .ez-board.ez-arranging .ez-board-iframe {
3182
+ pointer-events: none;
3183
+ }
3184
+ .ez-board-empty {
3185
+ position: absolute;
3186
+ inset: 0;
3187
+ display: grid;
3188
+ place-items: center;
3189
+ color: color-mix(in srgb, var(--paper-edge), var(--ink-ghost) 8%);
3190
+ pointer-events: none;
3191
+ }
3192
+ .ez-board-empty[hidden] {
3193
+ display: none;
3194
+ }
3195
+ .ez-board-tools {
3196
+ position: absolute;
3197
+ right: 12px;
3198
+ bottom: 12px;
3199
+ display: flex;
3200
+ align-items: center;
3201
+ padding: 3px;
3202
+ border-radius: 9px;
3203
+ background: color-mix(in srgb, var(--panel) 72%, transparent);
3204
+ box-shadow: 0 0 0 1px oklch(0% 0 0 / 0.05);
3205
+ backdrop-filter: blur(16px) saturate(1.4);
3206
+ }
3207
+ .ez-board-tool {
3208
+ display: grid;
3209
+ place-items: center;
3210
+ width: 26px;
3211
+ height: 26px;
3212
+ padding: 0;
3213
+ border: none;
3214
+ border-radius: 6px;
3215
+ background: transparent;
3216
+ color: var(--muted-foreground);
3217
+ cursor: pointer;
3218
+ }
3219
+ .ez-board-tool path {
3220
+ stroke-width: 2;
3221
+ }
3222
+ .ez-board-tool:hover {
3223
+ background: var(--muted);
3224
+ color: var(--foreground);
3225
+ }
3226
+ .ez-board-zoom {
3227
+ min-width: 38px;
3228
+ padding-left: 2px;
3229
+ text-align: center;
3230
+ font-size: 12px;
3231
+ font-variant-numeric: tabular-nums;
3232
+ color: var(--muted-foreground);
3233
+ }
3234
+ .ez-library {
3235
+ position: absolute;
3236
+ inset: 0 44px 0 0;
3237
+ z-index: 30;
3238
+ display: flex;
3239
+ background: var(--background);
3240
+ }
3241
+ .ez-library[data-entering] {
3242
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
3243
+ }
3244
+ .ez-library[hidden] {
3245
+ display: none;
3246
+ }
3247
+ .ez-library-scroll {
3248
+ flex: 1;
3249
+ min-width: 0;
3250
+ overflow-y: auto;
3251
+ }
3252
+ .ez-library-head {
3253
+ position: sticky;
3254
+ top: 0;
3255
+ z-index: 1;
3256
+ display: grid;
3257
+ justify-items: start;
3258
+ gap: 14px;
3259
+ padding: 28px 32px 18px;
3260
+ background: var(--background);
3261
+ }
3262
+ .ez-library-title {
3263
+ margin: 0;
3264
+ font-size: 20px;
3265
+ font-weight: 600;
3266
+ letter-spacing: -0.01em;
3267
+ line-height: 1.3;
3268
+ }
3269
+ .ez-library-search {
3270
+ display: flex;
3271
+ align-items: center;
3272
+ gap: 8px;
3273
+ width: min(420px, 100%);
3274
+ height: 36px;
3275
+ padding: 0 6px 0 11px;
3276
+ border: 1px solid var(--border);
3277
+ border-radius: var(--radius);
3278
+ background: var(--panel);
3279
+ color: var(--ink-faint);
3280
+ cursor: text;
3281
+ transition: border-color var(--t-pop) var(--ease-out), box-shadow var(--t-pop) var(--ease-out);
3282
+ }
3283
+ .ez-library-search:focus-within {
3284
+ border-color: var(--ring);
3285
+ box-shadow: 0 0 0 3px var(--ring-halo);
3286
+ }
3287
+ .ez-library-search input {
3288
+ flex: 1;
3289
+ min-width: 0;
3290
+ height: 100%;
3291
+ padding: 0;
3292
+ border: 0;
3293
+ outline: none;
3294
+ background: transparent;
3295
+ color: var(--foreground);
3296
+ font: inherit;
3297
+ font-size: 14px;
3298
+ }
3299
+ .ez-library-search input::placeholder {
3300
+ color: var(--ink-ghost);
3301
+ }
3302
+ .ez-library-search input::-webkit-search-cancel-button {
3303
+ display: none;
3304
+ }
3305
+ .ez-library-search-clear {
3306
+ display: grid;
3307
+ place-items: center;
3308
+ width: 24px;
3309
+ height: 24px;
3310
+ padding: 0;
3311
+ border: 0;
3312
+ border-radius: 6px;
3313
+ background: transparent;
3314
+ color: var(--ink-faint);
3315
+ cursor: pointer;
3316
+ }
3317
+ .ez-library-search-clear:hover {
3318
+ background: var(--muted);
3319
+ color: var(--foreground);
3320
+ }
3321
+ .ez-library-search-clear[hidden] {
3322
+ display: none;
3323
+ }
3324
+ .ez-library-tags {
3325
+ display: flex;
3326
+ flex-wrap: wrap;
3327
+ gap: 6px;
3328
+ }
3329
+ .ez-library-tags[hidden] {
3330
+ display: none;
3331
+ }
3332
+ .ez-library-tag {
3333
+ display: inline-flex;
3334
+ align-items: center;
3335
+ gap: 6px;
3336
+ height: 28px;
3337
+ padding: 0 10px;
3338
+ border: 0;
3339
+ border-radius: 7px;
3340
+ background: var(--muted);
3341
+ color: var(--foreground);
3342
+ font-family: inherit;
3343
+ font-size: 13px;
3344
+ font-weight: 500;
3345
+ white-space: nowrap;
3346
+ cursor: pointer;
3347
+ transition: background-color var(--t-pop) var(--ease-out), color var(--t-pop) var(--ease-out);
3348
+ }
3349
+ .ez-library-tag:hover {
3350
+ background: var(--border);
3351
+ }
3352
+ .ez-library-tag[aria-pressed=true] {
3353
+ background: var(--primary);
3354
+ color: var(--primary-foreground);
3355
+ }
3356
+ .ez-library-tag-uses {
3357
+ color: var(--ink-faint);
3358
+ font-size: 11px;
3359
+ font-variant-numeric: tabular-nums;
3360
+ }
3361
+ .ez-library-tag[aria-pressed=true] .ez-library-tag-uses {
3362
+ color: oklch(100% 0 0 / 0.6);
3363
+ }
3364
+ .ez-library-grid {
3365
+ display: grid;
3366
+ grid-template-columns: repeat(6, minmax(0, 1fr));
3367
+ gap: 22px 16px;
3368
+ margin: 0;
3369
+ padding: 6px 32px 40px;
3370
+ list-style: none;
3371
+ }
3372
+ .ez-library-card {
3373
+ display: grid;
3374
+ gap: 8px;
3375
+ width: 100%;
3376
+ padding: 0;
3377
+ border: 0;
3378
+ background: none;
3379
+ color: inherit;
3380
+ font: inherit;
3381
+ text-align: left;
3382
+ cursor: pointer;
3383
+ }
3384
+ .ez-library-card:focus-visible {
3385
+ outline: none;
3386
+ }
3387
+ .ez-library-card-media {
3388
+ --tile-radius: 14px;
3389
+ --tile-inset: 10px;
3390
+ --badge-inset: 8px;
3391
+ position: relative;
3392
+ display: block;
3393
+ aspect-ratio: 1;
3394
+ border-radius: var(--tile-radius);
3395
+ background: var(--muted);
3396
+ transition: background-color var(--t-pop) var(--ease-out), box-shadow var(--t-pop) var(--ease-out);
3397
+ }
3398
+ .ez-library-card:hover .ez-library-card-media {
3399
+ background: var(--border);
3400
+ }
3401
+ .ez-library-card:focus-visible .ez-library-card-media {
3402
+ box-shadow: 0 0 0 3px var(--ring-halo);
3403
+ }
3404
+ .ez-library-card-frame {
3405
+ position: absolute;
3406
+ inset: var(--tile-inset);
3407
+ display: flex;
3408
+ align-items: center;
3409
+ justify-content: center;
3410
+ }
3411
+ .ez-library-card-media img {
3412
+ display: block;
3413
+ max-width: 100%;
3414
+ max-height: 100%;
3415
+ border-radius: max(0px, var(--tile-radius) - var(--tile-inset));
3416
+ outline: 1px solid var(--image-outline);
3417
+ outline-offset: -1px;
3418
+ box-shadow: 0 1px 3px oklch(0% 0 0 / 0.06);
3419
+ }
3420
+ .ez-library-card-badge {
3421
+ position: absolute;
3422
+ top: var(--badge-inset);
3423
+ left: var(--badge-inset);
3424
+ display: inline-flex;
3425
+ align-items: center;
3426
+ gap: 3px;
3427
+ height: 20px;
3428
+ padding: 0 7px 0 5px;
3429
+ border-radius: calc(var(--tile-radius) - var(--badge-inset));
3430
+ background: oklch(0% 0 0 / 0.62);
3431
+ backdrop-filter: blur(8px);
3432
+ color: #fff;
3433
+ font-size: 11px;
3434
+ font-weight: 500;
3435
+ }
3436
+ .ez-library-card-caption {
3437
+ overflow: hidden;
3438
+ color: var(--muted-foreground);
3439
+ font-size: 12px;
3440
+ line-height: 1.4;
3441
+ white-space: nowrap;
3442
+ text-overflow: ellipsis;
3443
+ }
3444
+ .ez-library-sentinel {
3445
+ height: 1px;
3446
+ }
3447
+ .ez-library-empty {
3448
+ display: grid;
3449
+ justify-items: center;
3450
+ gap: 6px;
3451
+ max-width: 460px;
3452
+ margin: 12vh auto 0;
3453
+ padding: 0 24px;
3454
+ text-align: center;
3455
+ }
3456
+ .ez-library-empty[hidden] {
3457
+ display: none;
3458
+ }
3459
+ .ez-library-empty-title {
3460
+ margin: 0 0 4px;
3461
+ font-size: 15px;
3462
+ font-weight: 600;
3463
+ }
3464
+ .ez-library-empty-body {
3465
+ margin: 0;
3466
+ color: var(--muted-foreground);
3467
+ font-size: 13px;
3468
+ line-height: 1.6;
3469
+ }
3470
+ .ez-library-empty code,
3471
+ .ez-library-empty kbd {
3472
+ padding: 1px 5px;
3473
+ border-radius: 4px;
3474
+ background: var(--muted);
3475
+ color: var(--foreground);
3476
+ font:
3477
+ 12px ui-monospace,
3478
+ "SF Mono",
3479
+ Menlo,
3480
+ monospace;
3481
+ white-space: nowrap;
3482
+ }
3483
+ .ez-library-empty-action {
3484
+ height: 32px;
3485
+ margin-top: 8px;
3486
+ padding: 0 14px;
3487
+ border: 1px solid var(--border);
3488
+ border-radius: 7px;
3489
+ background: var(--panel);
3490
+ color: var(--foreground);
3491
+ font-family: inherit;
3492
+ font-size: 13px;
3493
+ font-weight: 600;
3494
+ cursor: pointer;
3495
+ }
3496
+ .ez-library-empty-action:hover {
3497
+ background: var(--muted);
3498
+ }
3499
+ .ez-library-empty-link {
3500
+ margin-top: 6px;
3501
+ padding: 0;
3502
+ border: 0;
3503
+ background: none;
3504
+ color: var(--foreground);
3505
+ font-family: inherit;
3506
+ font-size: 13px;
3507
+ font-weight: 500;
3508
+ text-decoration: underline;
3509
+ text-decoration-color: var(--ink-ghost);
3510
+ text-underline-offset: 3px;
3511
+ cursor: pointer;
3512
+ transition: text-decoration-color var(--t-pop) var(--ease-out);
3513
+ }
3514
+ .ez-library-empty-link:hover {
3515
+ text-decoration-color: currentColor;
3516
+ }
3517
+ .ez-library-toast {
3518
+ position: absolute;
3519
+ top: 16px;
3520
+ left: 50%;
3521
+ z-index: 2;
3522
+ margin: 0;
3523
+ padding: 6px 12px;
3524
+ border-radius: 8px;
3525
+ background: oklch(0% 0 0 / 0.78);
3526
+ backdrop-filter: blur(16px) saturate(1.6);
3527
+ box-shadow: inset 0 0 0 1px oklch(100% 0 0 / 0.1), 0 4px 16px oklch(0% 0 0 / 0.16);
3528
+ color: #fff;
3529
+ font-size: 12px;
3530
+ font-weight: 500;
3531
+ line-height: 1.5;
3532
+ white-space: nowrap;
3533
+ pointer-events: none;
3534
+ transform: translateX(-50%);
3535
+ animation: ez-toast-in var(--t-view) var(--ease-out) both;
3536
+ }
3537
+ .ez-library-toast[hidden] {
3538
+ display: none;
3539
+ }
3540
+ @keyframes ez-toast-in {
3541
+ from {
3542
+ opacity: 0;
3543
+ transform: translate(-50%, -6px) scale(0.96);
3544
+ }
3545
+ }
3546
+ @media (prefers-reduced-motion: reduce) {
3547
+ .ez-library-toast {
3548
+ animation-name: ez-fade-in;
3549
+ }
3550
+ }
3551
+ .ez-install {
3552
+ width: min(460px, calc(100vw - 32px));
3553
+ }
3554
+ .ez-install-steps {
3555
+ display: grid;
3556
+ gap: 14px;
3557
+ margin: 14px 0 0;
3558
+ padding: 0;
3559
+ list-style: none;
3560
+ counter-reset: step;
3561
+ }
3562
+ .ez-install-step {
3563
+ display: grid;
3564
+ grid-template-columns: 20px minmax(0, 1fr);
3565
+ column-gap: 10px;
3566
+ row-gap: 6px;
3567
+ font-size: 14px;
3568
+ line-height: 20px;
3569
+ counter-increment: step;
3570
+ }
3571
+ .ez-install-step::before {
3572
+ content: counter(step);
3573
+ grid-row: 1 / span 3;
3574
+ display: grid;
3575
+ place-items: center;
3576
+ width: 20px;
3577
+ height: 20px;
3578
+ border-radius: 50%;
3579
+ background: var(--muted);
3580
+ color: var(--muted-foreground);
3581
+ font-size: 12px;
3582
+ font-weight: 600;
3583
+ font-variant-numeric: tabular-nums;
3584
+ }
3585
+ .ez-install-step > * {
3586
+ grid-column: 2;
3587
+ }
3588
+ .ez-install-copy {
3589
+ display: flex;
3590
+ align-items: center;
3591
+ gap: 4px;
3592
+ padding: 4px 4px 4px 10px;
3593
+ border: 1px solid var(--border);
3594
+ border-radius: 7px;
3595
+ background: var(--muted);
3596
+ }
3597
+ .ez-install-copy code {
3598
+ flex: 1;
3599
+ min-width: 0;
3600
+ overflow-wrap: anywhere;
3601
+ font:
3602
+ 12px/1.5 ui-monospace,
3603
+ "SF Mono",
3604
+ Menlo,
3605
+ monospace;
3606
+ }
3607
+ .ez-install-copy-button {
3608
+ display: grid;
3609
+ flex-shrink: 0;
3610
+ place-items: center;
3611
+ width: 26px;
3612
+ height: 26px;
3613
+ padding: 0;
3614
+ border: 0;
3615
+ border-radius: 5px;
3616
+ background: none;
3617
+ color: var(--muted-foreground);
3618
+ cursor: pointer;
3619
+ }
3620
+ .ez-install-copy-button:hover {
3621
+ background: var(--border);
3622
+ color: var(--foreground);
3623
+ }
3624
+ .ez-install-hint {
3625
+ color: var(--muted-foreground);
3626
+ font-size: 12px;
3627
+ line-height: 1.5;
3628
+ }
3629
+ .ez-install .ez-dialog-actions {
3630
+ align-items: center;
3631
+ }
3632
+ .ez-install-status {
3633
+ display: flex;
3634
+ align-items: center;
3635
+ gap: 6px;
3636
+ margin: 0 auto 0 0;
3637
+ color: var(--muted-foreground);
3638
+ font-size: 13px;
3639
+ }
3640
+ .ez-install-status[data-tone=ok] {
3641
+ color: var(--attach-ink);
3642
+ }
3643
+ .ez-install-waiting {
3644
+ width: 6px;
3645
+ height: 6px;
3646
+ border-radius: 50%;
3647
+ background: currentColor;
3648
+ animation: ez-pulse 1.4s ease-in-out infinite;
3649
+ }
3650
+ .ez-install-body .ez-library-empty-action {
3651
+ margin-top: 12px;
3652
+ }
3653
+ .ez-library-picker {
3654
+ display: flex;
3655
+ flex-direction: column;
3656
+ width: min(960px, calc(100vw - 48px));
3657
+ max-width: none;
3658
+ height: min(720px, calc(100vh - 48px));
3659
+ max-height: none;
3660
+ padding: 0;
3661
+ border: 0;
3662
+ border-radius: 14px;
3663
+ overflow: hidden;
3664
+ background: var(--panel);
3665
+ color: var(--foreground);
3666
+ box-shadow:
3667
+ 0 0 0 1px oklch(0% 0 0 / 0.06),
3668
+ 0 24px 64px oklch(0% 0 0 / 0.24),
3669
+ 0 4px 12px oklch(0% 0 0 / 0.08);
3670
+ animation: ez-menu-in var(--t-view) var(--ease-out) both;
3671
+ }
3672
+ .ez-library-picker:not([open]) {
3673
+ display: none;
3674
+ }
3675
+ .ez-library-picker::backdrop {
3676
+ background: oklch(0% 0 0 / 0.32);
3677
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
3678
+ }
3679
+ .ez-library-picker-top {
3680
+ display: flex;
3681
+ align-items: center;
3682
+ justify-content: space-between;
3683
+ gap: 8px;
3684
+ padding: 16px 16px 0 24px;
3685
+ }
3686
+ .ez-library-picker-title {
3687
+ margin: 0;
3688
+ font-size: 16px;
3689
+ font-weight: 600;
3690
+ line-height: 1.4;
3691
+ }
3692
+ .ez-library-picker .ez-library-scroll {
3693
+ min-height: 0;
3694
+ }
3695
+ .ez-library-picker .ez-library-head {
3696
+ padding: 12px 24px 14px;
3697
+ background: var(--panel);
3698
+ }
3699
+ .ez-library-picker .ez-library-grid {
3700
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3701
+ gap: 14px;
3702
+ padding: 4px 24px 24px;
3703
+ }
3704
+ .ez-library-picker .ez-library-empty {
3705
+ margin-top: 8vh;
3706
+ }
3707
+ .ez-library-card-check {
3708
+ position: absolute;
3709
+ top: 8px;
3710
+ right: 8px;
3711
+ display: grid;
3712
+ place-items: center;
3713
+ width: 20px;
3714
+ height: 20px;
3715
+ border-radius: 50%;
3716
+ background: var(--primary);
3717
+ color: var(--primary-foreground);
3718
+ opacity: 0;
3719
+ transform: scale(0.8);
3720
+ transition: opacity var(--t-pop) var(--ease-out), transform var(--t-pop) var(--ease-out);
3721
+ }
3722
+ .ez-library-card[aria-pressed=true] .ez-library-card-check {
3723
+ opacity: 1;
3724
+ transform: none;
3725
+ }
3726
+ .ez-library-card-check path {
3727
+ stroke-width: 2.5;
3728
+ }
3729
+ .ez-library-card[aria-pressed=true] .ez-library-card-media {
3730
+ box-shadow: inset 0 0 0 2px var(--primary);
3731
+ }
3732
+ .ez-library-card[aria-pressed=true]:focus-visible .ez-library-card-media {
3733
+ box-shadow: inset 0 0 0 2px var(--primary), 0 0 0 3px var(--ring-halo);
3734
+ }
3735
+ .ez-library-picker-foot {
3736
+ display: flex;
3737
+ align-items: center;
3738
+ gap: 8px;
3739
+ padding: 12px 16px 12px 24px;
3740
+ border-top: 1px solid var(--border);
3741
+ }
3742
+ .ez-library-picker-count {
3743
+ margin: 0 auto 0 0;
3744
+ color: var(--muted-foreground);
3745
+ font-size: 13px;
3746
+ font-variant-numeric: tabular-nums;
3747
+ }
3748
+ .ez-library-picker-foot .ez-dialog-go:disabled {
3749
+ opacity: 0.4;
3750
+ cursor: default;
3751
+ }
3752
+ .ez-library-detail {
3753
+ width: min(1120px, calc(100vw - 48px));
3754
+ max-width: none;
3755
+ height: min(760px, calc(100vh - 48px));
3756
+ max-height: none;
3757
+ padding: 0;
3758
+ border: 0;
3759
+ border-radius: 14px;
3760
+ overflow: hidden;
3761
+ background: var(--panel);
3762
+ color: var(--foreground);
3763
+ box-shadow:
3764
+ 0 0 0 1px oklch(0% 0 0 / 0.06),
3765
+ 0 24px 64px oklch(0% 0 0 / 0.24),
3766
+ 0 4px 12px oklch(0% 0 0 / 0.08);
3767
+ animation: ez-menu-in var(--t-view) var(--ease-out) both;
3768
+ }
3769
+ .ez-library-detail::backdrop {
3770
+ background: oklch(0% 0 0 / 0.32);
3771
+ animation: ez-fade-in var(--t-view) var(--ease-out) both;
3772
+ }
3773
+ .ez-library-detail-body {
3774
+ display: grid;
3775
+ grid-template-columns: minmax(0, 1fr) 340px;
3776
+ height: 100%;
3777
+ }
3778
+ .ez-library-detail-stage {
3779
+ position: relative;
3780
+ display: flex;
3781
+ align-items: center;
3782
+ justify-content: center;
3783
+ min-height: 0;
3784
+ padding: 28px;
3785
+ background: var(--paper-sunken);
3786
+ }
3787
+ .ez-library-detail-media {
3788
+ display: block;
3789
+ max-width: 100%;
3790
+ max-height: 100%;
3791
+ border-radius: 4px;
3792
+ outline: 1px solid var(--image-outline);
3793
+ outline-offset: -1px;
3794
+ }
3795
+ .ez-library-detail-missing {
3796
+ color: var(--muted-foreground);
3797
+ font-size: 13px;
3798
+ }
3799
+ .ez-library-detail-step {
3800
+ position: absolute;
3801
+ top: 50%;
3802
+ display: grid;
3803
+ place-items: center;
3804
+ width: 36px;
3805
+ height: 36px;
3806
+ margin-top: -18px;
3807
+ padding: 0;
3808
+ border: 0;
3809
+ border-radius: 50%;
3810
+ background: oklch(100% 0 0 / 0.92);
3811
+ color: var(--foreground);
3812
+ box-shadow: 0 0 0 1px oklch(0% 0 0 / 0.06), 0 2px 8px oklch(0% 0 0 / 0.12);
3813
+ cursor: pointer;
3814
+ opacity: 0;
3815
+ transition: opacity var(--t-pop) var(--ease-out);
3816
+ }
3817
+ .ez-library-detail-step[data-side=prev] {
3818
+ left: 14px;
3819
+ }
3820
+ .ez-library-detail-step[data-side=next] {
3821
+ right: 14px;
3822
+ }
3823
+ .ez-library-detail-stage:hover .ez-library-detail-step,
3824
+ .ez-library-detail-step:focus-visible {
3825
+ opacity: 1;
3826
+ }
3827
+ .ez-library-detail-step[hidden] {
3828
+ display: none;
3829
+ }
3830
+ .ez-library-detail-side {
3831
+ display: flex;
3832
+ flex-direction: column;
3833
+ gap: 16px;
3834
+ min-height: 0;
3835
+ padding: 18px 20px 16px;
3836
+ overflow-y: auto;
3837
+ }
3838
+ .ez-library-detail-head {
3839
+ display: flex;
3840
+ align-items: flex-start;
3841
+ gap: 8px;
3842
+ }
3843
+ .ez-library-detail-title {
3844
+ display: inline-flex;
3845
+ flex: 1;
3846
+ min-width: 0;
3847
+ padding-top: 3px;
3848
+ color: var(--foreground);
3849
+ font-size: 15px;
3850
+ font-weight: 600;
3851
+ line-height: 1.4;
3852
+ text-decoration: none;
3853
+ }
3854
+ .ez-library-detail-title span {
3855
+ display: -webkit-box;
3856
+ overflow: hidden;
3857
+ overflow-wrap: anywhere;
3858
+ -webkit-box-orient: vertical;
3859
+ -webkit-line-clamp: 2;
3860
+ }
3861
+ .ez-library-detail-title[href]:hover span {
3862
+ text-decoration: underline;
3863
+ text-underline-offset: 2px;
3864
+ }
3865
+ .ez-library-detail-close {
3866
+ display: grid;
3867
+ flex-shrink: 0;
3868
+ place-items: center;
3869
+ width: 28px;
3870
+ height: 28px;
3871
+ padding: 0;
3872
+ border: 0;
3873
+ border-radius: 7px;
3874
+ background: transparent;
3875
+ color: var(--ink-faint);
3876
+ cursor: pointer;
3877
+ }
3878
+ .ez-library-detail-close:hover {
3879
+ background: var(--muted);
3880
+ color: var(--foreground);
3881
+ }
3882
+ .ez-library-detail-meta {
3883
+ margin: -12px 0 0;
3884
+ color: var(--muted-foreground);
3885
+ font-size: 12px;
3886
+ font-variant-numeric: tabular-nums;
3887
+ }
3888
+ .ez-library-detail-notice {
3889
+ margin: 0;
3890
+ padding: 8px 10px;
3891
+ border-radius: var(--radius);
3892
+ background: var(--muted);
3893
+ color: var(--muted-foreground);
3894
+ font-size: 12px;
3895
+ line-height: 1.5;
3896
+ }
3897
+ .ez-library-detail-notice[hidden] {
3898
+ display: none;
3899
+ }
3900
+ .ez-library-field {
3901
+ display: grid;
3902
+ gap: 6px;
3903
+ }
3904
+ .ez-library-field-label {
3905
+ color: var(--muted-foreground);
3906
+ font-size: 12px;
3907
+ font-weight: 500;
3908
+ }
3909
+ .ez-library-combo {
3910
+ position: relative;
3911
+ }
3912
+ .ez-library-tag-box,
3913
+ .ez-library-note {
3914
+ width: 100%;
3915
+ border: 1px solid var(--border);
3916
+ border-radius: var(--radius);
3917
+ background: var(--panel);
3918
+ transition: border-color var(--t-pop) var(--ease-out), box-shadow var(--t-pop) var(--ease-out);
3919
+ }
3920
+ .ez-library-tag-box {
3921
+ display: flex;
3922
+ flex-wrap: wrap;
3923
+ align-items: center;
3924
+ gap: 4px;
3925
+ min-height: 36px;
3926
+ padding: 5px 6px;
3927
+ cursor: text;
3928
+ }
3929
+ .ez-library-tag-box:focus-within,
3930
+ .ez-library-note:focus {
3931
+ border-color: var(--ring);
3932
+ box-shadow: 0 0 0 3px var(--ring-halo);
3933
+ }
3934
+ .ez-library-chips {
3935
+ display: contents;
3936
+ }
3937
+ .ez-library-chip {
3938
+ display: inline-flex;
3939
+ align-items: center;
3940
+ gap: 3px;
3941
+ max-width: 200px;
3942
+ height: 22px;
3943
+ padding: 0 6px;
3944
+ border: 0;
3945
+ border-radius: 4px;
3946
+ background: var(--tag);
3947
+ color: var(--tag-ink);
3948
+ font-family: inherit;
3949
+ font-size: 12px;
3950
+ font-weight: 500;
3951
+ white-space: nowrap;
3952
+ cursor: pointer;
3953
+ }
3954
+ .ez-library-chip > span:first-child {
3955
+ overflow: hidden;
3956
+ text-overflow: ellipsis;
3957
+ }
3958
+ .ez-library-chip-x {
3959
+ font-size: 13px;
3960
+ line-height: 1;
3961
+ opacity: 0.6;
3962
+ }
3963
+ .ez-library-chip:hover .ez-library-chip-x {
3964
+ opacity: 1;
3965
+ }
3966
+ .ez-library-tag-box input {
3967
+ flex: 1;
3968
+ min-width: 56px;
3969
+ height: 24px;
3970
+ padding: 0 2px;
3971
+ border: 0;
3972
+ outline: none;
3973
+ background: transparent;
3974
+ color: var(--foreground);
3975
+ font: inherit;
3976
+ font-size: 13px;
3977
+ }
3978
+ .ez-library-tag-box input::placeholder,
3979
+ .ez-library-note::placeholder {
3980
+ color: var(--ink-ghost);
3981
+ }
3982
+ .ez-library-tag-options {
3983
+ position: absolute;
3984
+ top: calc(100% + 4px);
3985
+ left: 0;
3986
+ z-index: 1;
3987
+ min-width: 200px;
3988
+ max-width: 100%;
3989
+ margin: 0;
3990
+ padding: 4px;
3991
+ border: 1px solid var(--border);
3992
+ border-radius: 10px;
3993
+ background: var(--panel);
3994
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
3995
+ list-style: none;
3996
+ animation: ez-menu-in var(--t-menu) var(--ease-out) both;
3997
+ transform-origin: top left;
3998
+ }
3999
+ .ez-library-tag-options[hidden] {
4000
+ display: none;
4001
+ }
4002
+ .ez-library-tag-options li {
4003
+ padding: 5px 8px;
4004
+ border-radius: 6px;
4005
+ font-size: 13px;
4006
+ cursor: pointer;
4007
+ }
4008
+ .ez-library-tag-options li:hover,
4009
+ .ez-library-tag-options li[aria-selected=true] {
4010
+ background: var(--muted);
4011
+ }
4012
+ .ez-library-note {
4013
+ display: block;
4014
+ min-height: 96px;
4015
+ padding: 7px 9px;
4016
+ outline: none;
4017
+ color: var(--foreground);
4018
+ font: inherit;
4019
+ font-size: 13px;
4020
+ line-height: 1.55;
4021
+ resize: vertical;
4022
+ }
4023
+ .ez-library-detail-foot {
4024
+ display: flex;
4025
+ align-items: center;
4026
+ justify-content: space-between;
4027
+ gap: 12px;
4028
+ margin-top: auto;
4029
+ padding-top: 4px;
4030
+ }
4031
+ .ez-library-detail-remove {
4032
+ display: inline-flex;
4033
+ align-items: center;
4034
+ gap: 6px;
4035
+ height: 32px;
4036
+ margin-left: -8px;
4037
+ padding: 0 10px 0 8px;
4038
+ border: 0;
4039
+ border-radius: 7px;
4040
+ background: transparent;
4041
+ color: var(--muted-foreground);
4042
+ font-family: inherit;
4043
+ font-size: 13px;
4044
+ font-weight: 500;
4045
+ cursor: pointer;
4046
+ }
4047
+ .ez-library-detail-remove:hover {
4048
+ background: color-mix(in oklab, var(--danger) 8%, transparent);
4049
+ color: var(--danger);
4050
+ }
4051
+ .ez-library-detail-status {
4052
+ margin: 0;
4053
+ color: var(--ink-faint);
4054
+ font-size: 12px;
4055
+ }
4056
+ .ez-library-detail-status[data-tone=error] {
4057
+ color: var(--danger);
4058
+ }
4059
+ @media (prefers-reduced-motion: reduce) {
4060
+ .ez-library-detail {
4061
+ animation-name: ez-fade-in;
4062
+ }
4063
+ }