@cychien/ezdesign 0.8.1 → 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.
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;
@@ -506,7 +626,9 @@ body.ez-arranging .ez-frame {
506
626
  .ez-shown[data-open] .ez-menu,
507
627
  .ez-config[data-open] .ez-menu,
508
628
  .ez-agent[data-open] .ez-menu,
509
- .ez-update-hint[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 {
510
632
  display: flex;
511
633
  }
512
634
  .ez-menu-right {
@@ -519,6 +641,13 @@ body.ez-arranging .ez-frame {
519
641
  max-height: 60vh;
520
642
  overflow-y: auto;
521
643
  }
644
+ .ez-account-menu {
645
+ top: auto;
646
+ left: auto;
647
+ bottom: 0;
648
+ right: calc(100% + 8px);
649
+ min-width: 200px;
650
+ }
522
651
  .ez-menu-group {
523
652
  display: flex;
524
653
  flex-direction: column;
@@ -679,14 +808,55 @@ body.ez-arranging .ez-frame {
679
808
  .ez-notices > *:not([hidden]) ~ *:not([hidden]) {
680
809
  border-top: 1px solid var(--border);
681
810
  }
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;
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: "";
689
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
+ }
690
860
  }
691
861
  .ez-update {
692
862
  position: relative;
@@ -1108,7 +1278,7 @@ body.ez-arranging .ez-frame {
1108
1278
  cursor: default;
1109
1279
  }
1110
1280
  .ez-qi-act.ez-qi-del:hover:not(:disabled) {
1111
- color: oklch(52% 0.2 25);
1281
+ color: var(--danger);
1112
1282
  }
1113
1283
  .ez-qi-comment {
1114
1284
  font-size: 13px;
@@ -2105,7 +2275,7 @@ body.ez-arranging .ez-frame {
2105
2275
  .ez-strip[hidden] {
2106
2276
  display: none;
2107
2277
  }
2108
- .ez-strip {
2278
+ .ez-stage-dock {
2109
2279
  position: absolute;
2110
2280
  left: 50%;
2111
2281
  bottom: 12px;
@@ -2117,7 +2287,15 @@ body.ez-arranging .ez-frame {
2117
2287
  gap: 8px;
2118
2288
  max-width: calc(100% - 24px);
2119
2289
  }
2120
- .ez-strip-pill {
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 {
2121
2299
  display: flex;
2122
2300
  align-items: center;
2123
2301
  gap: 8px;
@@ -2134,6 +2312,35 @@ body.ez-arranging .ez-frame {
2134
2312
  flex-shrink: 0;
2135
2313
  color: var(--explore-on-ink);
2136
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
+ }
2137
2344
  .ez-strip-chips {
2138
2345
  display: flex;
2139
2346
  align-items: center;
@@ -2480,3 +2687,1374 @@ body.ez-arranging .ez-frame {
2480
2687
  animation-duration: var(--t-pop);
2481
2688
  }
2482
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
+ }