@cychien/ezdesign 0.0.0-stage → 0.8.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/LICENSE +21 -0
- package/README.md +486 -2
- package/dist/cli.mjs +5649 -0
- package/dist/constants.d.ts +45 -0
- package/dist/overlay.css +465 -0
- package/dist/overlay.js +2447 -0
- package/dist/project-root.d.ts +10 -0
- package/dist/shell.css +2482 -0
- package/dist/shell.js +4644 -0
- package/dist/vite.d.ts +26 -0
- package/dist/vite.mjs +100 -0
- package/package.json +79 -4
- package/skills/ezdesign/SKILL.md +78 -0
- package/skills/ezdesign/reference/baseline.md +131 -0
- package/skills/ezdesign/reference/components.md +102 -0
- package/skills/ezdesign/reference/critique.md +129 -0
- package/skills/ezdesign/reference/design.md +247 -0
- package/skills/ezdesign/reference/inspiration.md +125 -0
- package/skills/ezdesign/reference/make.md +331 -0
- package/skills/ezdesign/reference/principles.md +130 -0
- package/skills/ezdesign/reference/product.md +127 -0
- package/skills/ezdesign/reference/stack.md +123 -0
- package/skills/ezdesign/reference/start.md +76 -0
- package/skills/ezdesign/scripts/page.d.mts +61 -0
- package/skills/ezdesign/scripts/page.mjs +908 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const APP_NAME = "ezdesign";
|
|
2
|
+
export declare const NPM_PACKAGE = "@cychien/ezdesign";
|
|
3
|
+
export declare const URL_PREFIX = "/__ezdesign";
|
|
4
|
+
export declare const DATA_DIR: string;
|
|
5
|
+
export declare const SESSIONS_DIR: string;
|
|
6
|
+
export declare const REGISTRY_FILE: string;
|
|
7
|
+
export declare const DAEMON_LOG: string;
|
|
8
|
+
/** Where a self-updating daemon installs the version it hands over to. */
|
|
9
|
+
export declare const VERSIONS_DIR: string;
|
|
10
|
+
export declare const UPDATE_CHECK_FILE: string;
|
|
11
|
+
export declare const NO_UPDATE_CHECK_ENV: string;
|
|
12
|
+
export declare const DEFAULT_CONTROL_PORT = 4400;
|
|
13
|
+
/** A second daemon must never share the control range with the first:
|
|
14
|
+
* `daemonMain` adopts any live daemon it finds inside its own range, so a
|
|
15
|
+
* separate DATA_DIR alone does not isolate it. Falling back to the default on a
|
|
16
|
+
* bad value would silently undo that isolation, so an unusable value is fatal
|
|
17
|
+
* rather than ignored. */
|
|
18
|
+
export declare function resolveControlPort(raw: string | undefined): number;
|
|
19
|
+
/** Ten consecutive ports starting at the resolved start. Resolved on call, not
|
|
20
|
+
* at import: this module is a dependency of the published `@cychien/ezdesign/vite`
|
|
21
|
+
* entry point, which must never read - let alone fail on - this variable. */
|
|
22
|
+
export declare function controlPortRange(): {
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
};
|
|
26
|
+
/** Surfaces a bad value at the command the user just ran, instead of leaving it
|
|
27
|
+
* to a detached daemon whose message only reaches the log file. */
|
|
28
|
+
export declare function assertControlPortEnv(): void;
|
|
29
|
+
/** Per-file cap on a pasted attachment. A retina screenshot runs 2-5 MB, so this
|
|
30
|
+
* clears the case the feature exists for while keeping a stray video out.
|
|
31
|
+
* Mirrored in `src/client/attach.ts`, which cannot import from this module. */
|
|
32
|
+
export declare const MAX_ATTACHMENT_BYTES: number;
|
|
33
|
+
/** How long an attachment nothing references survives the sweep. Long enough
|
|
34
|
+
* that a composer left open across a daemon restart still resolves its ids. */
|
|
35
|
+
export declare const ATTACHMENT_GRACE_MS: number;
|
|
36
|
+
/** How long one answer from the npm registry is trusted before asking again.
|
|
37
|
+
* A daemon lives as long as a review does, so this is the delay between a
|
|
38
|
+
* release and the shell offering it. */
|
|
39
|
+
export declare const UPDATE_CHECK_TTL_MS: number;
|
|
40
|
+
export declare const POLL_TIMEOUT_MS = 50000;
|
|
41
|
+
/** Consecutive connection failures a `poll` rides out before giving up. Covers a
|
|
42
|
+
* daemon restart, which the CLI survives by re-resolving the session port. */
|
|
43
|
+
export declare const POLL_RETRIES = 5;
|
|
44
|
+
export declare const IDLE_STOP_MS: number;
|
|
45
|
+
export declare const SOURCE_ATTR = "data-ez-source";
|
package/dist/overlay.css
ADDED
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
/* src/client/overlay.css */
|
|
2
|
+
[data-ez-mode=element]:not([data-ez-pick]),
|
|
3
|
+
[data-ez-mode=element]:not([data-ez-pick]) *:not([data-ez-ui], [data-ez-ui] *) {
|
|
4
|
+
cursor: pointer !important;
|
|
5
|
+
}
|
|
6
|
+
[data-ez-mode=region]:not([data-ez-pick]),
|
|
7
|
+
[data-ez-mode=region]:not([data-ez-pick]) *:not([data-ez-ui], [data-ez-ui] *) {
|
|
8
|
+
cursor: crosshair !important;
|
|
9
|
+
}
|
|
10
|
+
[data-ez-pick-hot],
|
|
11
|
+
[data-ez-pick-hot] *:not([data-ez-ui], [data-ez-ui] *) {
|
|
12
|
+
cursor: pointer !important;
|
|
13
|
+
}
|
|
14
|
+
[data-ez-framing],
|
|
15
|
+
[data-ez-framing] *:not([data-ez-ui], [data-ez-ui] *) {
|
|
16
|
+
cursor: crosshair !important;
|
|
17
|
+
}
|
|
18
|
+
.ez-popup {
|
|
19
|
+
cursor: auto;
|
|
20
|
+
}
|
|
21
|
+
.ez-input {
|
|
22
|
+
cursor: text;
|
|
23
|
+
}
|
|
24
|
+
.ez-marker {
|
|
25
|
+
cursor: default;
|
|
26
|
+
}
|
|
27
|
+
[data-ez-ui],
|
|
28
|
+
[data-ez-ui] * {
|
|
29
|
+
box-sizing: border-box;
|
|
30
|
+
}
|
|
31
|
+
[data-ez-ui] {
|
|
32
|
+
--ez-paper-sunken: #f2f0e9;
|
|
33
|
+
--ez-paper-edge: #e9e6dd;
|
|
34
|
+
--ez-ink: #171717;
|
|
35
|
+
--ez-ink-muted: #6e6e6e;
|
|
36
|
+
--ez-ink-faint: #878787;
|
|
37
|
+
--ez-ink-ghost: #b3b3b3;
|
|
38
|
+
--ez-ring: #b3b3b3;
|
|
39
|
+
--ez-ring-halo: color-mix(in oklab, var(--ez-ink) 12%, transparent);
|
|
40
|
+
--ez-mark: #e56d41;
|
|
41
|
+
--ez-attach: #cee7c1;
|
|
42
|
+
--ez-attach-ink: #3d5c36;
|
|
43
|
+
--ez-ref: #f4d3e2;
|
|
44
|
+
--ez-ref-ink: #7b3a5c;
|
|
45
|
+
--ez-ref-accent: #cf5f92;
|
|
46
|
+
--ez-explore-ink: #5e3f8c;
|
|
47
|
+
--ez-explore-accent: #6b3baa;
|
|
48
|
+
font-family:
|
|
49
|
+
-apple-system,
|
|
50
|
+
BlinkMacSystemFont,
|
|
51
|
+
"Segoe UI",
|
|
52
|
+
"Noto Sans TC",
|
|
53
|
+
sans-serif;
|
|
54
|
+
}
|
|
55
|
+
.ez-highlight {
|
|
56
|
+
position: fixed;
|
|
57
|
+
z-index: 2147483600;
|
|
58
|
+
pointer-events: none;
|
|
59
|
+
border: 3px solid var(--ez-mark);
|
|
60
|
+
border-radius: 4px;
|
|
61
|
+
background: color-mix(in oklab, var(--ez-mark) 10%, transparent);
|
|
62
|
+
box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.6), inset 0 0 0 1px oklch(100% 0 0 / 0.6);
|
|
63
|
+
display: none;
|
|
64
|
+
}
|
|
65
|
+
.ez-selection {
|
|
66
|
+
position: fixed;
|
|
67
|
+
inset: 0;
|
|
68
|
+
z-index: 2147483599;
|
|
69
|
+
pointer-events: none;
|
|
70
|
+
}
|
|
71
|
+
.ez-selection-band {
|
|
72
|
+
position: fixed;
|
|
73
|
+
border-radius: 2px;
|
|
74
|
+
background: color-mix(in oklab, var(--ez-mark) 30%, transparent);
|
|
75
|
+
box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--ez-mark) 45%, transparent);
|
|
76
|
+
}
|
|
77
|
+
.ez-pin {
|
|
78
|
+
position: fixed;
|
|
79
|
+
z-index: 2147483602;
|
|
80
|
+
pointer-events: none;
|
|
81
|
+
width: 14px;
|
|
82
|
+
height: 14px;
|
|
83
|
+
margin: -7px 0 0 -7px;
|
|
84
|
+
border-radius: 50%;
|
|
85
|
+
background: var(--ez-mark);
|
|
86
|
+
border: 2.5px solid #fff;
|
|
87
|
+
box-shadow: 0 1px 4px oklch(0% 0 0 / 0.35), 0 0 0 4px color-mix(in oklab, var(--ez-mark) 22%, transparent);
|
|
88
|
+
display: none;
|
|
89
|
+
transform-origin: center;
|
|
90
|
+
transform: scale(var(--ez-ui-scale, 1));
|
|
91
|
+
}
|
|
92
|
+
.ez-badge {
|
|
93
|
+
position: fixed;
|
|
94
|
+
z-index: 2147483601;
|
|
95
|
+
pointer-events: none;
|
|
96
|
+
background: var(--ez-ink);
|
|
97
|
+
color: #fff;
|
|
98
|
+
font-size: 11px;
|
|
99
|
+
font-weight: 500;
|
|
100
|
+
line-height: 1.6;
|
|
101
|
+
padding: 2px 8px;
|
|
102
|
+
border-radius: 5px;
|
|
103
|
+
box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25);
|
|
104
|
+
max-width: calc(60vw / var(--ez-ui-scale, 1));
|
|
105
|
+
overflow: hidden;
|
|
106
|
+
text-overflow: ellipsis;
|
|
107
|
+
white-space: nowrap;
|
|
108
|
+
display: none;
|
|
109
|
+
transform-origin: top left;
|
|
110
|
+
transform: scale(var(--ez-ui-scale, 1));
|
|
111
|
+
}
|
|
112
|
+
.ez-markers {
|
|
113
|
+
position: fixed;
|
|
114
|
+
top: 0;
|
|
115
|
+
left: 0;
|
|
116
|
+
z-index: 2147483599;
|
|
117
|
+
pointer-events: none;
|
|
118
|
+
}
|
|
119
|
+
.ez-marker {
|
|
120
|
+
position: absolute;
|
|
121
|
+
width: 20px;
|
|
122
|
+
height: 20px;
|
|
123
|
+
border-radius: 50%;
|
|
124
|
+
background: var(--ez-mark);
|
|
125
|
+
color: #fff;
|
|
126
|
+
font-size: 11px;
|
|
127
|
+
font-weight: 700;
|
|
128
|
+
line-height: 20px;
|
|
129
|
+
text-align: center;
|
|
130
|
+
box-shadow: 0 0 0 2px oklch(100% 0 0 / 0.85);
|
|
131
|
+
pointer-events: auto;
|
|
132
|
+
transform-origin: center;
|
|
133
|
+
transform: scale(var(--ez-ui-scale, 1));
|
|
134
|
+
}
|
|
135
|
+
.ez-select-btn {
|
|
136
|
+
position: absolute;
|
|
137
|
+
display: inline-flex;
|
|
138
|
+
align-items: center;
|
|
139
|
+
gap: 5px;
|
|
140
|
+
z-index: 2147483602;
|
|
141
|
+
background: var(--ez-ink);
|
|
142
|
+
color: #fff;
|
|
143
|
+
border: none;
|
|
144
|
+
border-radius: 7px;
|
|
145
|
+
padding: 5px 10px;
|
|
146
|
+
font-size: 12px;
|
|
147
|
+
font-weight: 500;
|
|
148
|
+
line-height: 1.4;
|
|
149
|
+
cursor: pointer;
|
|
150
|
+
box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 2px 8px oklch(0% 0 0 / 0.3);
|
|
151
|
+
transform-origin: top left;
|
|
152
|
+
transform: scale(var(--ez-ui-scale, 1));
|
|
153
|
+
}
|
|
154
|
+
.ez-popup {
|
|
155
|
+
position: fixed;
|
|
156
|
+
z-index: 2147483603;
|
|
157
|
+
width: 300px;
|
|
158
|
+
max-width: calc((100vw - 24px) / var(--ez-ui-scale, 1));
|
|
159
|
+
transform-origin: top left;
|
|
160
|
+
transform: scale(var(--ez-ui-scale, 1));
|
|
161
|
+
background: #fff;
|
|
162
|
+
color: var(--ez-ink);
|
|
163
|
+
border: 1px solid var(--ez-paper-edge);
|
|
164
|
+
border-radius: 14px;
|
|
165
|
+
box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
|
|
166
|
+
padding: 8px;
|
|
167
|
+
}
|
|
168
|
+
.ez-attach-field {
|
|
169
|
+
border: 1px solid var(--ez-paper-edge);
|
|
170
|
+
border-radius: 10px;
|
|
171
|
+
padding: 7px 9px;
|
|
172
|
+
background: var(--ez-paper-sunken);
|
|
173
|
+
transition: border-color 0.12s ease, background 0.12s ease;
|
|
174
|
+
}
|
|
175
|
+
.ez-attach-field[data-drop] {
|
|
176
|
+
background: var(--ez-paper-edge);
|
|
177
|
+
}
|
|
178
|
+
.ez-input {
|
|
179
|
+
display: block;
|
|
180
|
+
position: relative;
|
|
181
|
+
min-height: 58px;
|
|
182
|
+
max-height: 180px;
|
|
183
|
+
overflow-y: auto;
|
|
184
|
+
font-family: inherit;
|
|
185
|
+
font-size: 13px;
|
|
186
|
+
font-weight: 400;
|
|
187
|
+
line-height: 1.5;
|
|
188
|
+
color: var(--ez-ink);
|
|
189
|
+
white-space: pre-wrap;
|
|
190
|
+
word-break: break-word;
|
|
191
|
+
outline: none;
|
|
192
|
+
overscroll-behavior: contain;
|
|
193
|
+
}
|
|
194
|
+
.ez-input[data-empty]::before {
|
|
195
|
+
content: attr(data-placeholder);
|
|
196
|
+
position: absolute;
|
|
197
|
+
inset: 0 0 auto 0;
|
|
198
|
+
color: var(--ez-ink-faint);
|
|
199
|
+
pointer-events: none;
|
|
200
|
+
}
|
|
201
|
+
.ez-attach-field:focus-within {
|
|
202
|
+
border-color: var(--ez-ring);
|
|
203
|
+
outline: 3px solid var(--ez-ring-halo);
|
|
204
|
+
outline-offset: 0;
|
|
205
|
+
}
|
|
206
|
+
.ez-chip {
|
|
207
|
+
display: inline-flex;
|
|
208
|
+
align-items: center;
|
|
209
|
+
gap: 3px;
|
|
210
|
+
max-width: 180px;
|
|
211
|
+
vertical-align: baseline;
|
|
212
|
+
padding: 1px 6px;
|
|
213
|
+
border-radius: 4px;
|
|
214
|
+
background: var(--ez-attach);
|
|
215
|
+
font-size: 11px;
|
|
216
|
+
font-weight: 500;
|
|
217
|
+
line-height: 1.55;
|
|
218
|
+
color: var(--ez-attach-ink);
|
|
219
|
+
white-space: nowrap;
|
|
220
|
+
user-select: none;
|
|
221
|
+
cursor: default;
|
|
222
|
+
}
|
|
223
|
+
.ez-chip-name {
|
|
224
|
+
overflow: hidden;
|
|
225
|
+
text-overflow: ellipsis;
|
|
226
|
+
min-width: 0;
|
|
227
|
+
}
|
|
228
|
+
.ez-chip svg {
|
|
229
|
+
flex-shrink: 0;
|
|
230
|
+
}
|
|
231
|
+
.ez-chip-ref {
|
|
232
|
+
background: var(--ez-ref);
|
|
233
|
+
color: var(--ez-ref-ink);
|
|
234
|
+
}
|
|
235
|
+
.ez-chip-ref.ez-chip-chosen svg {
|
|
236
|
+
color: var(--ez-explore-accent);
|
|
237
|
+
}
|
|
238
|
+
.ez-chip-pending {
|
|
239
|
+
opacity: 0.55;
|
|
240
|
+
}
|
|
241
|
+
.ez-attach-error {
|
|
242
|
+
margin-top: 4px;
|
|
243
|
+
font-size: 11px;
|
|
244
|
+
line-height: 1.5;
|
|
245
|
+
color: oklch(52% 0.2 25);
|
|
246
|
+
}
|
|
247
|
+
.ez-slash-menu {
|
|
248
|
+
position: fixed;
|
|
249
|
+
z-index: 2147483604;
|
|
250
|
+
min-width: 240px;
|
|
251
|
+
max-width: 300px;
|
|
252
|
+
padding: 4px 4px 5px;
|
|
253
|
+
border-radius: 10px;
|
|
254
|
+
background: #fff;
|
|
255
|
+
border: 1px solid var(--ez-paper-edge);
|
|
256
|
+
cursor: auto;
|
|
257
|
+
box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
|
|
258
|
+
}
|
|
259
|
+
.ez-slash-head {
|
|
260
|
+
padding: 7px 10px 5px;
|
|
261
|
+
font-size: 11px;
|
|
262
|
+
font-weight: 500;
|
|
263
|
+
line-height: 1.4;
|
|
264
|
+
color: var(--ez-ink-faint);
|
|
265
|
+
}
|
|
266
|
+
.ez-slash-item {
|
|
267
|
+
display: flex;
|
|
268
|
+
align-items: center;
|
|
269
|
+
gap: 6px;
|
|
270
|
+
padding: 6px 10px;
|
|
271
|
+
border-radius: 6px;
|
|
272
|
+
cursor: pointer;
|
|
273
|
+
color: var(--ez-ink);
|
|
274
|
+
}
|
|
275
|
+
.ez-slash-item[data-active] {
|
|
276
|
+
background: var(--ez-paper-sunken);
|
|
277
|
+
}
|
|
278
|
+
.ez-slash-item svg {
|
|
279
|
+
flex-shrink: 0;
|
|
280
|
+
color: var(--ez-ink-muted);
|
|
281
|
+
}
|
|
282
|
+
.ez-slash-label {
|
|
283
|
+
font-size: 13px;
|
|
284
|
+
line-height: 1;
|
|
285
|
+
white-space: nowrap;
|
|
286
|
+
}
|
|
287
|
+
.ez-slash-hint {
|
|
288
|
+
margin-left: auto;
|
|
289
|
+
padding-left: 14px;
|
|
290
|
+
min-width: 0;
|
|
291
|
+
overflow: hidden;
|
|
292
|
+
text-overflow: ellipsis;
|
|
293
|
+
white-space: nowrap;
|
|
294
|
+
font-size: 12px;
|
|
295
|
+
color: var(--ez-ink-faint);
|
|
296
|
+
}
|
|
297
|
+
.ez-actions {
|
|
298
|
+
display: flex;
|
|
299
|
+
justify-content: flex-end;
|
|
300
|
+
gap: 6px;
|
|
301
|
+
margin-top: 6px;
|
|
302
|
+
}
|
|
303
|
+
.ez-btn {
|
|
304
|
+
display: inline-flex;
|
|
305
|
+
align-items: center;
|
|
306
|
+
gap: 5px;
|
|
307
|
+
border: none;
|
|
308
|
+
background: transparent;
|
|
309
|
+
color: var(--ez-ink-muted);
|
|
310
|
+
border-radius: 8px;
|
|
311
|
+
padding: 6px 12px;
|
|
312
|
+
font-size: 13px;
|
|
313
|
+
font-family: inherit;
|
|
314
|
+
cursor: pointer;
|
|
315
|
+
transition: background 0.12s ease;
|
|
316
|
+
}
|
|
317
|
+
.ez-btn:hover {
|
|
318
|
+
background: var(--ez-paper-sunken);
|
|
319
|
+
}
|
|
320
|
+
.ez-btn-primary {
|
|
321
|
+
background: var(--ez-ink);
|
|
322
|
+
color: #fff;
|
|
323
|
+
font-weight: 600;
|
|
324
|
+
}
|
|
325
|
+
.ez-btn-primary:hover {
|
|
326
|
+
background: var(--ez-ink);
|
|
327
|
+
opacity: 0.88;
|
|
328
|
+
}
|
|
329
|
+
.ez-popup[data-ez-hidden] {
|
|
330
|
+
display: none;
|
|
331
|
+
}
|
|
332
|
+
[data-ez-pick] .ez-highlight {
|
|
333
|
+
border-color: var(--ez-ref-accent);
|
|
334
|
+
background: color-mix(in oklab, var(--ez-ref-accent) 10%, transparent);
|
|
335
|
+
}
|
|
336
|
+
[data-ez-pick] .ez-badge {
|
|
337
|
+
background: var(--ez-ref-accent);
|
|
338
|
+
}
|
|
339
|
+
.ez-region {
|
|
340
|
+
position: fixed;
|
|
341
|
+
z-index: 2147483598;
|
|
342
|
+
pointer-events: none;
|
|
343
|
+
display: none;
|
|
344
|
+
border: 1px dashed var(--ez-ref-accent);
|
|
345
|
+
background: color-mix(in oklab, var(--ez-ref-accent) 9%, transparent);
|
|
346
|
+
}
|
|
347
|
+
.ez-region-size {
|
|
348
|
+
position: absolute;
|
|
349
|
+
top: 100%;
|
|
350
|
+
right: 0;
|
|
351
|
+
margin-top: 4px;
|
|
352
|
+
transform-origin: top right;
|
|
353
|
+
transform: scale(var(--ez-ui-scale, 1));
|
|
354
|
+
padding: 1px 6px;
|
|
355
|
+
border-radius: 4px;
|
|
356
|
+
background: var(--ez-ref-accent);
|
|
357
|
+
color: #fff;
|
|
358
|
+
font-size: 10.5px;
|
|
359
|
+
font-weight: 600;
|
|
360
|
+
line-height: 1.6;
|
|
361
|
+
font-variant-numeric: tabular-nums;
|
|
362
|
+
white-space: nowrap;
|
|
363
|
+
}
|
|
364
|
+
.ez-region-size[data-ez-inside] {
|
|
365
|
+
top: auto;
|
|
366
|
+
bottom: 4px;
|
|
367
|
+
margin: 0 4px 0 0;
|
|
368
|
+
}
|
|
369
|
+
[data-ez-mode=region]:not([data-ez-pick]) .ez-region {
|
|
370
|
+
border-color: var(--ez-mark);
|
|
371
|
+
background: color-mix(in oklab, var(--ez-mark) 9%, transparent);
|
|
372
|
+
}
|
|
373
|
+
[data-ez-mode=region]:not([data-ez-pick]) .ez-region-size {
|
|
374
|
+
background: var(--ez-mark);
|
|
375
|
+
}
|
|
376
|
+
.ez-pick-banner {
|
|
377
|
+
position: fixed;
|
|
378
|
+
bottom: 16px;
|
|
379
|
+
left: 50%;
|
|
380
|
+
transform-origin: bottom left;
|
|
381
|
+
transform: scale(var(--ez-ui-scale, 1)) translateX(-50%);
|
|
382
|
+
z-index: 2147483605;
|
|
383
|
+
display: none;
|
|
384
|
+
align-items: center;
|
|
385
|
+
gap: 8px;
|
|
386
|
+
max-width: calc((100vw - 24px) / var(--ez-ui-scale, 1));
|
|
387
|
+
padding: 7px 8px 7px 12px;
|
|
388
|
+
border-radius: 999px;
|
|
389
|
+
background: var(--ez-ink);
|
|
390
|
+
box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 6px 20px oklch(0% 0 0 / 0.3);
|
|
391
|
+
color: #fff;
|
|
392
|
+
font-size: 12px;
|
|
393
|
+
line-height: 1.5;
|
|
394
|
+
white-space: nowrap;
|
|
395
|
+
}
|
|
396
|
+
.ez-pick-banner svg {
|
|
397
|
+
flex-shrink: 0;
|
|
398
|
+
color: var(--ez-ref-accent);
|
|
399
|
+
}
|
|
400
|
+
.ez-pick-text {
|
|
401
|
+
overflow: hidden;
|
|
402
|
+
text-overflow: ellipsis;
|
|
403
|
+
min-width: 0;
|
|
404
|
+
}
|
|
405
|
+
.ez-pick-cancel {
|
|
406
|
+
flex-shrink: 0;
|
|
407
|
+
padding: 3px 9px;
|
|
408
|
+
border: 0;
|
|
409
|
+
border-radius: 999px;
|
|
410
|
+
background: oklch(100% 0 0 / 0.14);
|
|
411
|
+
color: inherit;
|
|
412
|
+
font: inherit;
|
|
413
|
+
font-size: 11.5px;
|
|
414
|
+
cursor: pointer;
|
|
415
|
+
}
|
|
416
|
+
.ez-pick-cancel:hover {
|
|
417
|
+
background: oklch(100% 0 0 / 0.24);
|
|
418
|
+
}
|
|
419
|
+
.ez-popup-notice {
|
|
420
|
+
margin-bottom: 8px;
|
|
421
|
+
padding: 7px 9px;
|
|
422
|
+
border-radius: 6px;
|
|
423
|
+
background: oklch(96% 0.045 85);
|
|
424
|
+
color: oklch(43% 0.1 70);
|
|
425
|
+
font-size: 11.5px;
|
|
426
|
+
line-height: 1.55;
|
|
427
|
+
}
|
|
428
|
+
[data-ez-swapped] {
|
|
429
|
+
display: none !important;
|
|
430
|
+
}
|
|
431
|
+
ez-variant {
|
|
432
|
+
display: contents;
|
|
433
|
+
}
|
|
434
|
+
.ez-explore-head {
|
|
435
|
+
display: flex;
|
|
436
|
+
align-items: center;
|
|
437
|
+
gap: 5px;
|
|
438
|
+
margin-bottom: 4px;
|
|
439
|
+
color: var(--ez-explore-ink);
|
|
440
|
+
}
|
|
441
|
+
.ez-explore-head[hidden] {
|
|
442
|
+
display: none;
|
|
443
|
+
}
|
|
444
|
+
.ez-explore-title {
|
|
445
|
+
font-size: 12px;
|
|
446
|
+
font-weight: 500;
|
|
447
|
+
letter-spacing: 0.01em;
|
|
448
|
+
}
|
|
449
|
+
.ez-popup-explore .ez-btn-primary {
|
|
450
|
+
background: var(--ez-explore-accent);
|
|
451
|
+
}
|
|
452
|
+
.ez-popup-explore .ez-btn-primary:hover {
|
|
453
|
+
background: var(--ez-explore-accent);
|
|
454
|
+
opacity: 0.88;
|
|
455
|
+
}
|
|
456
|
+
.ez-popup-explore .ez-attach-field {
|
|
457
|
+
padding-top: 6px;
|
|
458
|
+
}
|
|
459
|
+
.ez-popup-explore .ez-attach-field:focus-within {
|
|
460
|
+
border-color: color-mix(in oklab, var(--ez-explore-accent) 45%, var(--ez-paper-edge));
|
|
461
|
+
outline-color: color-mix(in oklab, var(--ez-explore-accent) 12%, transparent);
|
|
462
|
+
}
|
|
463
|
+
.ez-popup-explore .ez-btn-primary [hidden] {
|
|
464
|
+
display: none;
|
|
465
|
+
}
|