ysharma HF Staff commited on
Commit
00638c8
verified
1 Parent(s): ca20d03

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +128 -122
index.html CHANGED
@@ -19,12 +19,14 @@
19
  }
20
  * { box-sizing: border-box; }
21
  [hidden] { display: none !important; }
22
- html, body { margin: 0; padding: 0; }
23
  body {
 
24
  font-family: 'Inter', system-ui, -apple-system, "Segoe UI", sans-serif;
25
  background: var(--paper);
26
  color: var(--ink);
27
- line-height: 1.5;
 
28
  -webkit-font-smoothing: antialiased;
29
  text-rendering: optimizeLegibility;
30
  }
@@ -32,18 +34,19 @@
32
 
33
  /* ---------- nav ---------- */
34
  .nav {
 
35
  display: flex; align-items: center; justify-content: space-between;
36
- padding: 22px 40px;
37
  border-bottom: 1px solid var(--rule);
38
  }
39
  .brand {
40
  font-family: 'Instrument Serif', Georgia, serif;
41
- font-size: 24px;
42
  letter-spacing: 0.005em;
43
  }
44
  .brand sup {
45
  font-family: 'JetBrains Mono', monospace;
46
- font-size: 11px;
47
  color: var(--accent);
48
  margin-left: 4px;
49
  top: -0.7em;
@@ -51,7 +54,7 @@
51
  }
52
  .nav .meta {
53
  font-family: 'JetBrains Mono', monospace;
54
- font-size: 11px;
55
  letter-spacing: 0.04em;
56
  color: var(--ink-3);
57
  text-transform: uppercase;
@@ -64,76 +67,73 @@
64
 
65
  /* ---------- hero ---------- */
66
  .hero {
67
- padding: 96px 40px 56px;
 
68
  border-bottom: 1px solid var(--rule);
69
- max-width: 1280px;
 
70
  }
71
  .hero .eyebrow {
72
  font-family: 'JetBrains Mono', monospace;
73
- font-size: 11px;
74
  letter-spacing: 0.18em;
75
  text-transform: uppercase;
76
  color: var(--ink-3);
77
- margin-bottom: 24px;
78
  }
79
  .hero h1 {
80
  font-family: 'Instrument Serif', Georgia, serif;
81
  font-weight: 400;
82
- font-size: clamp(44px, 7.5vw, 92px);
83
- line-height: 0.98;
84
- letter-spacing: -0.015em;
85
- margin: 0 0 24px;
86
- max-width: 13ch;
87
  }
88
  .hero h1 em { font-style: italic; color: var(--accent); }
89
  .hero p {
90
- max-width: 56ch;
91
  color: var(--ink-2);
92
- font-size: 17px;
93
  margin: 0;
 
 
94
  }
95
 
96
- /* ---------- workspace ---------- */
97
  main {
 
 
98
  display: grid;
99
  grid-template-columns: 1fr 1fr;
 
100
  border-bottom: 1px solid var(--rule);
101
  }
102
- @media (max-width: 880px) { main { grid-template-columns: 1fr; } }
 
103
 
104
- .panel {
105
- padding: 36px 40px 44px;
106
- min-height: 560px;
107
- display: flex; flex-direction: column;
108
- }
109
- .panel + .panel {
110
- border-left: 1px solid var(--rule);
111
- }
112
- @media (max-width: 880px) {
113
- .panel + .panel { border-left: 0; border-top: 1px solid var(--rule); }
114
- }
115
-
116
- .panel-head {
117
- display: flex; align-items: baseline; justify-content: space-between;
118
- margin-bottom: 18px;
119
  }
120
  .panel-num {
121
  font-family: 'JetBrains Mono', monospace;
122
- font-size: 11px;
123
  letter-spacing: 0.16em;
124
  text-transform: uppercase;
125
  color: var(--ink-3);
126
  }
127
  .panel-title {
128
  font-family: 'Instrument Serif', Georgia, serif;
129
- font-size: 22px;
130
  font-style: italic;
131
  color: var(--ink);
132
  }
133
 
134
- /* drop zone */
 
 
 
 
135
  .frame {
136
- aspect-ratio: 4/5;
137
  background: var(--paper-2);
138
  border: 1px solid var(--rule);
139
  position: relative;
@@ -144,78 +144,85 @@
144
  .frame.dashed:hover, .frame.dashed.over { border-color: var(--ink); background: #fff; }
145
  .frame img { width: 100%; height: 100%; object-fit: contain; display: block; background: #fff; }
146
 
147
- .placeholder { text-align: center; color: var(--ink-3); padding: 24px; }
148
  .placeholder .glyph {
149
  font-family: 'Instrument Serif', Georgia, serif;
150
- font-size: 48px; font-style: italic; color: var(--ink);
151
  line-height: 1;
152
  }
153
  .placeholder .small {
154
  font-family: 'JetBrains Mono', monospace;
155
- font-size: 11px; letter-spacing: 0.08em;
156
- color: var(--ink-3); margin-top: 14px;
157
  }
158
  .placeholder .small b { color: var(--ink); font-weight: 500; }
159
 
160
- /* prompt */
161
- .field {
162
- margin-top: 20px;
163
- }
164
- .field label {
165
- display: block;
166
- font-family: 'JetBrains Mono', monospace;
167
- font-size: 11px; letter-spacing: 0.12em;
168
- text-transform: uppercase;
169
- color: var(--ink-3);
170
- margin-bottom: 8px;
171
  }
172
  textarea {
173
  width: 100%;
174
- padding: 14px 16px;
175
  border: 1px solid var(--rule);
176
  background: var(--paper-2);
177
- font-family: inherit; font-size: 15px;
178
  color: var(--ink);
179
- resize: vertical;
180
- min-height: 88px;
181
  border-radius: 0;
182
  }
183
  textarea:focus { outline: none; border-color: var(--ink); }
184
 
185
- /* presets */
186
- .presets {
187
- display: flex; flex-wrap: wrap; gap: 6px;
188
- margin-top: 10px;
189
  }
 
190
  .preset {
191
- font: 12px/1 'JetBrains Mono', monospace;
192
  color: var(--ink-2);
193
  background: transparent;
194
  border: 1px solid var(--rule);
195
- padding: 7px 10px;
196
  cursor: pointer;
197
  transition: border-color .12s, color .12s;
198
  }
199
  .preset:hover { border-color: var(--ink); color: var(--ink); }
200
 
201
  button.go {
202
- margin-top: 20px;
203
- padding: 16px 18px;
204
  background: var(--ink);
205
  color: var(--paper);
206
  border: none;
207
  font-family: 'Inter', sans-serif;
208
- font-size: 13px;
209
  font-weight: 500;
210
  letter-spacing: 0.16em;
211
  text-transform: uppercase;
212
  cursor: pointer;
213
  transition: background .15s;
 
214
  }
215
  button.go:hover:not(:disabled) { background: var(--accent); }
216
  button.go:disabled { opacity: 0.35; cursor: not-allowed; }
217
 
218
- /* output */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  .frame .empty {
220
  color: var(--ink-3);
221
  font-family: 'JetBrains Mono', monospace;
@@ -237,34 +244,31 @@
237
  }
238
  @keyframes pulse { 0%,100% { opacity: 0.2; } 50% { opacity: 1; } }
239
 
240
- .out-meta {
241
- margin-top: 16px;
242
- display: flex; align-items: center; gap: 16px;
243
- font-family: 'JetBrains Mono', monospace;
244
- font-size: 11px; letter-spacing: 0.06em; color: var(--ink-3);
245
- min-height: 24px;
246
- }
247
- .out-meta a {
248
- color: var(--ink); text-decoration: underline; text-underline-offset: 4px;
249
- text-transform: uppercase; letter-spacing: 0.12em;
250
- }
251
- .out-meta .seed { margin-left: auto; }
252
-
253
  /* footer */
254
  footer {
255
- padding: 32px 40px;
 
256
  display: flex; align-items: center; justify-content: space-between;
257
  font-family: 'JetBrains Mono', monospace;
258
- font-size: 11px; letter-spacing: 0.04em;
259
  color: var(--ink-3);
260
  text-transform: uppercase;
261
  }
262
  footer a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
263
 
 
264
  @media (max-width: 880px) {
265
- .nav, .hero, .panel, footer { padding-left: 24px; padding-right: 24px; }
266
- .hero { padding-top: 64px; padding-bottom: 40px; }
267
- .panel { min-height: 0; }
 
 
 
 
 
 
 
 
268
  }
269
  </style>
270
  </head>
@@ -275,65 +279,64 @@
275
  <div class="meta"><span class="dot"></span>FireRed-Image-Edit 路 gr.Server</div>
276
  </nav>
277
 
278
- <section class="hero">
279
  <div class="eyebrow">Issue 001 路 Image Workshop</div>
280
  <h1>Edit any photograph with <em>one sentence</em>.</h1>
281
- <p>A four-step image editor backed by FireRed-Image-Edit 1.1, served on free GPU through a small custom backend. Drop in a photo, describe the change, get a result.</p>
282
- </section>
283
 
284
  <main>
285
- <!-- Source -->
286
- <section class="panel">
287
- <div class="panel-head">
288
- <div class="panel-num">01 / Source</div>
289
- <div class="panel-title">your photo</div>
290
- </div>
291
-
 
 
 
 
 
292
  <div class="frame dashed" id="drop">
293
  <div class="placeholder" id="placeholder">
294
  <div class="glyph">+</div>
295
- <div class="small"><b>Click</b> or <b>drop</b> a photo here<br>JPG 路 PNG 路 WEBP</div>
296
  </div>
297
  <img id="preview" hidden alt="">
298
  </div>
299
  <input type="file" id="file" accept="image/*" hidden>
 
 
 
 
 
 
 
 
300
 
301
- <div class="field">
302
- <label for="prompt">Edit instruction</label>
303
- <textarea id="prompt" placeholder="convert to black and white with grain, replace background with a misty forest, transform into a 1990s polaroid..."></textarea>
 
304
  <div class="presets" id="presets">
305
  <button class="preset" type="button" data-p="Convert it to black and white with subtle film grain.">B&amp;W film</button>
306
  <button class="preset" type="button" data-p="Transform the image into a soft watercolor painting.">Watercolor</button>
307
  <button class="preset" type="button" data-p="Cinematic polaroid with soft grain, subtle vignette, gentle lighting, white frame, preserving realistic texture.">Polaroid</button>
308
  <button class="preset" type="button" data-p="Convert into a clean line-art ink drawing on white paper.">Line art</button>
309
  </div>
 
310
  </div>
311
-
312
- <button id="go" class="go" disabled>Run edit</button>
313
- </section>
314
-
315
- <!-- Result -->
316
- <section class="panel">
317
- <div class="panel-head">
318
- <div class="panel-num">02 / Result</div>
319
- <div class="panel-title">the edit</div>
320
- </div>
321
-
322
- <div class="frame" id="out">
323
- <span class="empty" id="empty">Output will appear here</span>
324
- <img id="result" hidden alt="">
325
- <div class="loader" id="loader" hidden><span class="bar"></span>Editing</div>
326
- </div>
327
-
328
- <div class="out-meta">
329
- <a href="#" id="download" hidden>Download PNG</a>
330
- <span class="seed" id="seed"></span>
331
- </div>
332
- </section>
333
  </main>
334
 
335
  <footer>
336
- <span>Backend: <a href="https://www.gradio.app/main/docs/gradio/server">gr.Server</a> &nbsp;&nbsp; Model: <a href="https://huggingface.co/FireRedTeam/FireRed-Image-Edit-1.1">FireRed-Image-Edit 1.1</a></span>
337
  <span>Free GPU via <a href="https://huggingface.co/docs/hub/spaces-zerogpu">ZeroGPU</a></span>
338
  </footer>
339
 
@@ -355,6 +358,7 @@
355
  const loader = document.getElementById('loader');
356
  const download = document.getElementById('download');
357
  const seedEl = document.getElementById('seed');
 
358
 
359
  let currentFile = null;
360
 
@@ -365,6 +369,7 @@
365
  preview.hidden = false;
366
  placeholder.hidden = true;
367
  goBtn.disabled = false;
 
368
  }
369
 
370
  drop.addEventListener('click', () => fileInput.click());
@@ -395,6 +400,7 @@
395
  result.hidden = true;
396
  download.hidden = true;
397
  seedEl.textContent = '';
 
398
 
399
  try {
400
  const client = await clientPromise;
 
19
  }
20
  * { box-sizing: border-box; }
21
  [hidden] { display: none !important; }
22
+ html, body { height: 100%; margin: 0; padding: 0; }
23
  body {
24
+ display: flex; flex-direction: column;
25
  font-family: 'Inter', system-ui, -apple-system, "Segoe UI", sans-serif;
26
  background: var(--paper);
27
  color: var(--ink);
28
+ line-height: 1.45;
29
+ overflow: hidden;
30
  -webkit-font-smoothing: antialiased;
31
  text-rendering: optimizeLegibility;
32
  }
 
34
 
35
  /* ---------- nav ---------- */
36
  .nav {
37
+ flex: 0 0 auto;
38
  display: flex; align-items: center; justify-content: space-between;
39
+ padding: 12px 28px;
40
  border-bottom: 1px solid var(--rule);
41
  }
42
  .brand {
43
  font-family: 'Instrument Serif', Georgia, serif;
44
+ font-size: 20px;
45
  letter-spacing: 0.005em;
46
  }
47
  .brand sup {
48
  font-family: 'JetBrains Mono', monospace;
49
+ font-size: 10px;
50
  color: var(--accent);
51
  margin-left: 4px;
52
  top: -0.7em;
 
54
  }
55
  .nav .meta {
56
  font-family: 'JetBrains Mono', monospace;
57
+ font-size: 10px;
58
  letter-spacing: 0.04em;
59
  color: var(--ink-3);
60
  text-transform: uppercase;
 
67
 
68
  /* ---------- hero ---------- */
69
  .hero {
70
+ flex: 0 0 auto;
71
+ padding: 14px 28px 16px;
72
  border-bottom: 1px solid var(--rule);
73
+ display: flex; align-items: baseline; gap: 24px;
74
+ flex-wrap: wrap;
75
  }
76
  .hero .eyebrow {
77
  font-family: 'JetBrains Mono', monospace;
78
+ font-size: 10px;
79
  letter-spacing: 0.18em;
80
  text-transform: uppercase;
81
  color: var(--ink-3);
 
82
  }
83
  .hero h1 {
84
  font-family: 'Instrument Serif', Georgia, serif;
85
  font-weight: 400;
86
+ font-size: clamp(22px, 3.2vw, 32px);
87
+ line-height: 1.05;
88
+ letter-spacing: -0.01em;
89
+ margin: 0;
 
90
  }
91
  .hero h1 em { font-style: italic; color: var(--accent); }
92
  .hero p {
 
93
  color: var(--ink-2);
94
+ font-size: 13px;
95
  margin: 0;
96
+ margin-left: auto;
97
+ max-width: 56ch;
98
  }
99
 
100
+ /* ---------- workspace grid ---------- */
101
  main {
102
+ flex: 1 1 auto;
103
+ min-height: 0;
104
  display: grid;
105
  grid-template-columns: 1fr 1fr;
106
+ grid-template-rows: auto 1fr auto;
107
  border-bottom: 1px solid var(--rule);
108
  }
109
+ .cell { padding: 0 28px; min-width: 0; min-height: 0; }
110
+ .cell.right { border-left: 1px solid var(--rule); }
111
 
112
+ .cell.head {
113
+ padding-top: 14px; padding-bottom: 8px;
114
+ display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
 
 
 
 
 
 
 
 
 
 
 
 
115
  }
116
  .panel-num {
117
  font-family: 'JetBrains Mono', monospace;
118
+ font-size: 10px;
119
  letter-spacing: 0.16em;
120
  text-transform: uppercase;
121
  color: var(--ink-3);
122
  }
123
  .panel-title {
124
  font-family: 'Instrument Serif', Georgia, serif;
125
+ font-size: 18px;
126
  font-style: italic;
127
  color: var(--ink);
128
  }
129
 
130
+ /* drop / output frame */
131
+ .cell.frame-cell {
132
+ padding-top: 0; padding-bottom: 0;
133
+ display: flex;
134
+ }
135
  .frame {
136
+ flex: 1; min-height: 0; min-width: 0;
137
  background: var(--paper-2);
138
  border: 1px solid var(--rule);
139
  position: relative;
 
144
  .frame.dashed:hover, .frame.dashed.over { border-color: var(--ink); background: #fff; }
145
  .frame img { width: 100%; height: 100%; object-fit: contain; display: block; background: #fff; }
146
 
147
+ .placeholder { text-align: center; color: var(--ink-3); padding: 18px; }
148
  .placeholder .glyph {
149
  font-family: 'Instrument Serif', Georgia, serif;
150
+ font-size: 36px; font-style: italic; color: var(--ink);
151
  line-height: 1;
152
  }
153
  .placeholder .small {
154
  font-family: 'JetBrains Mono', monospace;
155
+ font-size: 10px; letter-spacing: 0.08em;
156
+ color: var(--ink-3); margin-top: 10px;
157
  }
158
  .placeholder .small b { color: var(--ink); font-weight: 500; }
159
 
160
+ /* controls (left bottom row) */
161
+ .cell.controls {
162
+ padding-top: 10px; padding-bottom: 14px;
163
+ display: flex; flex-direction: column; gap: 8px;
 
 
 
 
 
 
 
164
  }
165
  textarea {
166
  width: 100%;
167
+ padding: 9px 12px;
168
  border: 1px solid var(--rule);
169
  background: var(--paper-2);
170
+ font-family: inherit; font-size: 14px;
171
  color: var(--ink);
172
+ resize: none;
173
+ height: 52px;
174
  border-radius: 0;
175
  }
176
  textarea:focus { outline: none; border-color: var(--ink); }
177
 
178
+ .controls-row {
179
+ display: flex; align-items: center; justify-content: space-between;
180
+ gap: 12px; flex-wrap: wrap;
 
181
  }
182
+ .presets { display: flex; flex-wrap: wrap; gap: 5px; }
183
  .preset {
184
+ font: 11px/1 'JetBrains Mono', monospace;
185
  color: var(--ink-2);
186
  background: transparent;
187
  border: 1px solid var(--rule);
188
+ padding: 6px 9px;
189
  cursor: pointer;
190
  transition: border-color .12s, color .12s;
191
  }
192
  .preset:hover { border-color: var(--ink); color: var(--ink); }
193
 
194
  button.go {
195
+ padding: 10px 18px;
 
196
  background: var(--ink);
197
  color: var(--paper);
198
  border: none;
199
  font-family: 'Inter', sans-serif;
200
+ font-size: 12px;
201
  font-weight: 500;
202
  letter-spacing: 0.16em;
203
  text-transform: uppercase;
204
  cursor: pointer;
205
  transition: background .15s;
206
+ white-space: nowrap;
207
  }
208
  button.go:hover:not(:disabled) { background: var(--accent); }
209
  button.go:disabled { opacity: 0.35; cursor: not-allowed; }
210
 
211
+ /* result meta (right bottom row) */
212
+ .cell.meta-cell {
213
+ padding-top: 10px; padding-bottom: 14px;
214
+ display: flex; align-items: center; gap: 14px;
215
+ font-family: 'JetBrains Mono', monospace;
216
+ font-size: 11px; letter-spacing: 0.06em; color: var(--ink-3);
217
+ }
218
+ .cell.meta-cell a {
219
+ color: var(--ink); text-decoration: underline; text-underline-offset: 4px;
220
+ text-transform: uppercase; letter-spacing: 0.12em;
221
+ }
222
+ .cell.meta-cell .seed { margin-left: auto; }
223
+ .meta-empty { color: var(--ink-3); }
224
+
225
+ /* loader & empty */
226
  .frame .empty {
227
  color: var(--ink-3);
228
  font-family: 'JetBrains Mono', monospace;
 
244
  }
245
  @keyframes pulse { 0%,100% { opacity: 0.2; } 50% { opacity: 1; } }
246
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  /* footer */
248
  footer {
249
+ flex: 0 0 auto;
250
+ padding: 10px 28px;
251
  display: flex; align-items: center; justify-content: space-between;
252
  font-family: 'JetBrains Mono', monospace;
253
+ font-size: 10px; letter-spacing: 0.04em;
254
  color: var(--ink-3);
255
  text-transform: uppercase;
256
  }
257
  footer a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
258
 
259
+ /* mobile / narrow viewports */
260
  @media (max-width: 880px) {
261
+ body { overflow: auto; }
262
+ .hero { padding: 12px 18px; gap: 8px; }
263
+ .hero p { margin-left: 0; }
264
+ main {
265
+ grid-template-columns: 1fr;
266
+ grid-template-rows: auto auto auto auto auto auto;
267
+ }
268
+ .cell.right { border-left: 0; border-top: 1px solid var(--rule); }
269
+ .cell.head.right { padding-top: 12px; }
270
+ .cell.frame-cell { min-height: 280px; }
271
+ .nav, .cell, footer { padding-left: 18px; padding-right: 18px; }
272
  }
273
  </style>
274
  </head>
 
279
  <div class="meta"><span class="dot"></span>FireRed-Image-Edit 路 gr.Server</div>
280
  </nav>
281
 
282
+ <header class="hero">
283
  <div class="eyebrow">Issue 001 路 Image Workshop</div>
284
  <h1>Edit any photograph with <em>one sentence</em>.</h1>
285
+ <p>Four-step inference on FireRed-Image-Edit 1.1, served on free GPU.</p>
286
+ </header>
287
 
288
  <main>
289
+ <!-- heads -->
290
+ <div class="cell head left">
291
+ <span class="panel-num">01 / Source</span>
292
+ <span class="panel-title">your photo</span>
293
+ </div>
294
+ <div class="cell head right">
295
+ <span class="panel-num">02 / Result</span>
296
+ <span class="panel-title">the edit</span>
297
+ </div>
298
+
299
+ <!-- frames -->
300
+ <div class="cell frame-cell left">
301
  <div class="frame dashed" id="drop">
302
  <div class="placeholder" id="placeholder">
303
  <div class="glyph">+</div>
304
+ <div class="small"><b>Click</b> or <b>drop</b> a photo hereJPG 路 PNG 路 WEBP</div>
305
  </div>
306
  <img id="preview" hidden alt="">
307
  </div>
308
  <input type="file" id="file" accept="image/*" hidden>
309
+ </div>
310
+ <div class="cell frame-cell right">
311
+ <div class="frame" id="out">
312
+ <span class="empty" id="empty">Output will appear here</span>
313
+ <img id="result" hidden alt="">
314
+ <div class="loader" id="loader" hidden><span class="bar"></span>Editing</div>
315
+ </div>
316
+ </div>
317
 
318
+ <!-- controls / meta -->
319
+ <div class="cell controls left">
320
+ <textarea id="prompt" placeholder="convert to black and white with grain, replace background with a misty forest, transform into a 1990s polaroid..."></textarea>
321
+ <div class="controls-row">
322
  <div class="presets" id="presets">
323
  <button class="preset" type="button" data-p="Convert it to black and white with subtle film grain.">B&amp;W film</button>
324
  <button class="preset" type="button" data-p="Transform the image into a soft watercolor painting.">Watercolor</button>
325
  <button class="preset" type="button" data-p="Cinematic polaroid with soft grain, subtle vignette, gentle lighting, white frame, preserving realistic texture.">Polaroid</button>
326
  <button class="preset" type="button" data-p="Convert into a clean line-art ink drawing on white paper.">Line art</button>
327
  </div>
328
+ <button id="go" class="go" disabled>Run edit</button>
329
  </div>
330
+ </div>
331
+ <div class="cell meta-cell right">
332
+ <a href="#" id="download" hidden>Download PNG</a>
333
+ <span class="meta-empty" id="meta-empty">Upload a photo to begin</span>
334
+ <span class="seed" id="seed"></span>
335
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  </main>
337
 
338
  <footer>
339
+ <span>Backend: <a href="https://www.gradio.app/main/docs/gradio/server">gr.Server</a> 路 Model: <a href="https://huggingface.co/FireRedTeam/FireRed-Image-Edit-1.1">FireRed-Image-Edit 1.1</a></span>
340
  <span>Free GPU via <a href="https://huggingface.co/docs/hub/spaces-zerogpu">ZeroGPU</a></span>
341
  </footer>
342
 
 
358
  const loader = document.getElementById('loader');
359
  const download = document.getElementById('download');
360
  const seedEl = document.getElementById('seed');
361
+ const metaEmpty = document.getElementById('meta-empty');
362
 
363
  let currentFile = null;
364
 
 
369
  preview.hidden = false;
370
  placeholder.hidden = true;
371
  goBtn.disabled = false;
372
+ if (metaEmpty) metaEmpty.textContent = 'Ready';
373
  }
374
 
375
  drop.addEventListener('click', () => fileInput.click());
 
400
  result.hidden = true;
401
  download.hidden = true;
402
  seedEl.textContent = '';
403
+ if (metaEmpty) metaEmpty.hidden = true;
404
 
405
  try {
406
  const client = await clientPromise;