Aleksmorshen commited on
Commit
2c0f4b6
·
verified ·
1 Parent(s): 2e145cf

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +320 -219
index.html CHANGED
@@ -1,27 +1,21 @@
1
  <!DOCTYPE html>
2
-
3
  <html lang="ru">
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Synkris Look 5</title>
8
  <style>
9
  :root {
10
- --bg: #000000;
11
- --card-bg: #0a0a0a;
12
- --primary: #ccff00;
13
- --primary-hover: #b3e600;
14
- --text: #ffffff;
15
- --text-secondary: #a1a1a1;
16
- --border: #333333;
17
- --input-bg: #111111;
18
  }
19
 
20
- code
21
- Code
22
- download
23
- content_copy
24
- expand_less
25
  body {
26
  font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
27
  background-color: var(--bg);
@@ -30,14 +24,14 @@ body {
30
  padding: 20px;
31
  display: flex;
32
  justify-content: center;
33
- align-items: center;
34
  min-height: 100vh;
35
  }
36
 
37
  .container {
38
  background-color: var(--card-bg);
39
  width: 100%;
40
- max-width: 600px;
41
  padding: 35px;
42
  border-radius: 20px;
43
  border: 1px solid #222;
@@ -63,6 +57,36 @@ p.subtitle {
63
  letter-spacing: 0.5px;
64
  }
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  .form-grid {
67
  display: grid;
68
  grid-template-columns: 1fr 1fr;
@@ -78,7 +102,7 @@ p.subtitle {
78
  flex-direction: column;
79
  }
80
 
81
- label {
82
  font-weight: 500;
83
  margin-bottom: 8px;
84
  font-size: 0.85rem;
@@ -87,7 +111,7 @@ label {
87
  letter-spacing: 0.5px;
88
  }
89
 
90
- select, textarea, input {
91
  padding: 12px 14px;
92
  border: 1px solid var(--border);
93
  border-radius: 8px;
@@ -96,9 +120,11 @@ select, textarea, input {
96
  color: var(--text);
97
  transition: all 0.3s ease;
98
  outline: none;
 
 
99
  }
100
 
101
- select:focus, textarea:focus {
102
  border-color: var(--primary);
103
  box-shadow: 0 0 10px rgba(204, 255, 0, 0.2);
104
  }
@@ -148,7 +174,29 @@ select option {
148
  color: #fff;
149
  }
150
 
151
- @media (max-width: 500px) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  .form-grid {
153
  grid-template-columns: 1fr;
154
  }
@@ -158,227 +206,280 @@ select option {
158
  .container {
159
  padding: 20px;
160
  }
 
 
 
 
 
 
161
  }
 
162
  </style>
163
  </head>
164
  <body>
165
 
166
  <div class="container">
167
- <h1>Synkris Look 5</h1>
168
- <p class="subtitle">PROMPT GENERATOR & LAUNCHER</p>
169
-
170
- code
171
- Code
172
- download
173
- content_copy
174
- expand_less
175
- <form id="promptForm">
176
- <div class="form-grid">
177
- <div class="form-group">
178
- <label for="gender">Пол</label>
179
- <select id="gender" onchange="autoAdjustDefaults()">
180
- <option value="Woman">Женщина</option>
181
- <option value="Man">Мужчина</option>
182
- </select>
183
- </div>
184
-
185
- <div class="form-group">
186
- <label for="age">Возраст</label>
187
- <select id="age">
188
- <option value="18 years old">18 лет</option>
189
- <option value="20-25 years old" selected>20-25 лет</option>
190
- <option value="25-30 years old">25-30 лет</option>
191
- <option value="30-40 years old">30-40 лет</option>
192
- <option value="40-50 years old">40-50 лет</option>
193
- <option value="50-60 years old">50-60 лет</option>
194
- <option value="60+ years old">60+ лет</option>
195
- </select>
196
- </div>
197
-
198
- <div class="form-group">
199
- <label for="nationality">Внешность/Этнос</label>
200
- <select id="nationality">
201
- <option value="Eastern European">Восточная Европа</option>
202
- <option value="Northern European">Скандинавская</option>
203
- <option value="Southern European">Южно-европейская</option>
204
- <option value="Asian">Азиатская</option>
205
- <option value="Latin American">Латиноамериканская</option>
206
- <option value="African">Африканская</option>
207
- <option value="Indian">Индийская</option>
208
- <option value="Middle Eastern">Ближневосточная</option>
209
- <option value="Mixed Race">Смешанная</option>
210
- </select>
211
- </div>
212
-
213
- <div class="form-group">
214
- <label for="bodyType">Телосложение</label>
215
- <select id="bodyType">
216
- <option value="Fit and slim">Стройное/Подтянутое</option>
217
- <option value="Hourglass figure">Песочные часы</option>
218
- <option value="Athletic">Спортивное</option>
219
- <option value="Muscular">Мускулистое</option>
220
- <option value="Curvy">Пышное (Curvy)</option>
221
- <option value="Skinny model look">Модельная худоба</option>
222
- <option value="Average realistic">Обычное</option>
223
- </select>
224
- </div>
225
-
226
- <div class="form-group">
227
- <label for="hairColor">Цвет волос</label>
228
- <select id="hairColor">
229
- <option value="Brunette">Брюнет</option>
230
- <option value="Blonde">Блонд</option>
231
- <option value="Black">Черные</option>
232
- <option value="Redhead">Рыжие</option>
233
- <option value="Platinum Blonde">Платиновые</option>
234
- <option value="Grey">Седые</option>
235
- <option value="Pastel Pink">Розовые</option>
236
- <option value="Bald">Лысый</option>
237
- </select>
238
- </div>
239
-
240
- <div class="form-group">
241
- <label for="hairstyle">Стрижка</label>
242
- <select id="hairstyle">
243
- <option value="Long loose wavy hair">Длинные волны</option>
244
- <option value="Straight long hair">Длинные прямые</option>
245
- <option value="Messy bun">Небрежный пучок</option>
246
- <option value="Ponytail">Хвост</option>
247
- <option value="Bob cut">Каре</option>
248
- <option value="Short pixie">Пикси (Короткая)</option>
249
- <option value="Buzz cut">Ежик</option>
250
- <option value="Fade cut">Фейд (Мужской)</option>
251
- <option value="Slicked back">Зачесанные назад</option>
252
- </select>
253
- </div>
254
 
255
- <div class="form-group">
256
- <label for="eyeColor">Глаза</label>
257
- <select id="eyeColor">
258
- <option value="Brown">Карие</option>
259
- <option value="Blue">Голубые</option>
260
- <option value="Green">Зеленые</option>
261
- <option value="Hazel">Ореховые</option>
262
- <option value="Grey">Серые</option>
263
- </select>
264
- </div>
265
 
266
- <div class="form-group">
267
- <label for="style">Эстетика</label>
268
- <select id="style">
269
- <option value="Raw Candid Photography">Живое фото (Raw)</option>
270
- <option value="Cinematic Movie Still">Кадр из фильма</option>
271
- <option value="Fashion Editorial">Модный журнал</option>
272
- <option value="Street Style">Уличный стиль</option>
273
- <option value="Dark Moody Atmosphere">Мрачная атмосфера</option>
274
- <option value="Neon Cyberpunk">Неон / Киберпанк</option>
275
- <option value="Vintage Analog Film">Пленка (Vintage)</option>
276
- <option value="Professional Studio">Студийный свет</option>
277
- </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  </div>
279
 
280
- <div class="form-group full-width">
281
- <label for="additional">Детали (Одежда, Локация, Действие)</label>
282
- <textarea id="additional" placeholder="Например: в черном кожаном плаще, идет по дождливой улице, смотрит в камеру"></textarea>
 
 
283
  </div>
284
- </div>
285
-
286
- <div class="btn-container">
287
- <button type="button" class="action-btn" onclick="processAndOpen()">
288
- <span>Launch Synkris AI</span>
289
- <span style="font-size: 1.2em">⚡</span>
290
- </button>
291
- </div>
292
- </form>
293
  </div>
294
 
295
  <script>
296
- function autoAdjustDefaults() {
297
- const gender = document.getElementById('gender').value;
298
- const hairstyle = document.getElementById('hairstyle');
299
- const bodyType = document.getElementById('bodyType');
300
-
301
- if (gender === 'Man') {
302
- hairstyle.value = 'Fade cut';
303
- bodyType.value = 'Athletic';
304
-
305
- if (!hairstyle.value) hairstyle.value = 'Short cut';
306
- } else {
307
- hairstyle.value = 'Long loose wavy hair';
308
- bodyType.value = 'Fit and slim';
309
- }
310
  }
311
 
312
- async function processAndOpen() {
313
- const btn = document.querySelector('.action-btn');
314
- const originalText = btn.innerHTML;
315
-
316
- const gender = document.getElementById('gender').value;
317
- const age = document.getElementById('age').value;
318
- const nationality = document.getElementById('nationality').value;
319
- const bodyType = document.getElementById('bodyType').value;
320
- const hairColor = document.getElementById('hairColor').value;
321
- const hairstyle = document.getElementById('hairstyle').value;
322
- const eyeColor = document.getElementById('eyeColor').value;
323
- const style = document.getElementById('style').value;
324
- const additional = document.getElementById('additional').value || "casual stylish outfit, standing confidently";
325
-
326
- const fullPrompt = `Full body shot, wide angle view, visible shoes and legs. A photorealistic ${style} of a ${age} ${nationality} ${gender}.
327
- Appearance: ${bodyType} physique, ${hairColor} ${hairstyle}, detailed ${eyeColor} eyes, realistic skin texture with pores and natural imperfections.
328
- Action/Context: ${additional}.
329
- Technical: 8k resolution, raw photo, unedited look, fujifilm xt4, sharp focus, volumetric lighting, hyper-detailed, alive, non-artificial, masterpiece.`;
330
-
331
- const data = {
332
- prompt: fullPrompt,
333
- negative_prompt: "cropped, portrait, close up, watermark, text, 3d render, cartoon, anime, smooth skin, plastic look, doll, artificial, blurry, distorted hands, extra fingers",
334
- aspect_ratio: "9:16"
335
- };
336
-
337
- const jsonString = JSON.stringify(data, null, 2);
338
-
339
- let copied = false;
340
- try {
341
- if (navigator.clipboard && navigator.clipboard.writeText) {
342
- await navigator.clipboard.writeText(jsonString);
343
- copied = true;
344
- } else {
345
- throw new Error("Clipboard API unavailable");
346
- }
347
- } catch (err) {
348
- const textArea = document.createElement("textarea");
349
- textArea.value = jsonString;
350
- textArea.style.position = "fixed";
351
- document.body.appendChild(textArea);
352
- textArea.focus();
353
- textArea.select();
354
- try {
355
- document.execCommand('copy');
356
- copied = true;
357
- } catch (e) {
358
- alert("Manual copy required.");
359
  }
360
- document.body.removeChild(textArea);
 
 
 
361
  }
362
 
363
- if (copied) {
364
- btn.style.backgroundColor = "#fff";
365
- btn.style.color = "#000";
366
- btn.innerHTML = "SYSTEM READY. LAUNCHING... 🚀";
367
 
368
- setTimeout(() => {
369
- window.open('https://lmarena.ai/ru?chat-modality=image&mode=direct', '_blank');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
370
 
371
- setTimeout(() => {
372
- btn.style.backgroundColor = "";
373
- btn.style.color = "";
374
- btn.innerHTML = originalText;
375
- }, 1000);
376
- }, 800);
377
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  }
379
 
380
- document.addEventListener('DOMContentLoaded', autoAdjustDefaults);
 
 
 
381
  </script>
382
 
383
  </body>
384
- </html>
 
1
  <!DOCTYPE html>
 
2
  <html lang="ru">
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Synkris Look 6</title>
7
  <style>
8
  :root {
9
+ --bg: #000000;
10
+ --card-bg: #0a0a0a;
11
+ --primary: #ccff00;
12
+ --primary-hover: #b3e600;
13
+ --text: #ffffff;
14
+ --text-secondary: #a1a1a1;
15
+ --border: #333333;
16
+ --input-bg: #111111;
17
  }
18
 
 
 
 
 
 
19
  body {
20
  font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
21
  background-color: var(--bg);
 
24
  padding: 20px;
25
  display: flex;
26
  justify-content: center;
27
+ align-items: flex-start;
28
  min-height: 100vh;
29
  }
30
 
31
  .container {
32
  background-color: var(--card-bg);
33
  width: 100%;
34
+ max-width: 700px;
35
  padding: 35px;
36
  border-radius: 20px;
37
  border: 1px solid #222;
 
57
  letter-spacing: 0.5px;
58
  }
59
 
60
+ .mode-selector {
61
+ display: flex;
62
+ justify-content: center;
63
+ margin-bottom: 30px;
64
+ background-color: var(--input-bg);
65
+ border-radius: 12px;
66
+ padding: 5px;
67
+ border: 1px solid var(--border);
68
+ }
69
+
70
+ .mode-btn {
71
+ flex: 1;
72
+ padding: 10px 15px;
73
+ background-color: transparent;
74
+ border: none;
75
+ color: var(--text-secondary);
76
+ font-size: 0.9rem;
77
+ font-weight: 600;
78
+ cursor: pointer;
79
+ border-radius: 8px;
80
+ transition: all 0.3s ease;
81
+ text-transform: uppercase;
82
+ }
83
+
84
+ .mode-btn.active {
85
+ background-color: var(--primary);
86
+ color: #000;
87
+ box-shadow: 0 0 10px rgba(204, 255, 0, 0.3);
88
+ }
89
+
90
  .form-grid {
91
  display: grid;
92
  grid-template-columns: 1fr 1fr;
 
102
  flex-direction: column;
103
  }
104
 
105
+ label, .checkbox-label {
106
  font-weight: 500;
107
  margin-bottom: 8px;
108
  font-size: 0.85rem;
 
111
  letter-spacing: 0.5px;
112
  }
113
 
114
+ select, textarea, input[type="text"] {
115
  padding: 12px 14px;
116
  border: 1px solid var(--border);
117
  border-radius: 8px;
 
120
  color: var(--text);
121
  transition: all 0.3s ease;
122
  outline: none;
123
+ width: 100%;
124
+ box-sizing: border-box;
125
  }
126
 
127
+ select:focus, textarea:focus, input[type="text"]:focus {
128
  border-color: var(--primary);
129
  box-shadow: 0 0 10px rgba(204, 255, 0, 0.2);
130
  }
 
174
  color: #fff;
175
  }
176
 
177
+ .form-mode {
178
+ display: none;
179
+ }
180
+
181
+ .form-mode.active {
182
+ display: contents;
183
+ }
184
+
185
+ .checkbox-container {
186
+ display: flex;
187
+ align-items: center;
188
+ background-color: var(--input-bg);
189
+ border: 1px solid var(--border);
190
+ border-radius: 8px;
191
+ padding: 12px 14px;
192
+ }
193
+
194
+ .checkbox-container input {
195
+ margin-right: 10px;
196
+ }
197
+
198
+ /* Responsive Design */
199
+ @media (max-width: 600px) {
200
  .form-grid {
201
  grid-template-columns: 1fr;
202
  }
 
206
  .container {
207
  padding: 20px;
208
  }
209
+ h1 {
210
+ font-size: 1.8rem;
211
+ }
212
+ .mode-btn {
213
+ font-size: 0.8rem;
214
+ }
215
  }
216
+
217
  </style>
218
  </head>
219
  <body>
220
 
221
  <div class="container">
222
+ <h1>Synkris Look</h1>
223
+ <p class="subtitle">PROMPT GENERATOR & LAUNCHER</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
 
225
+ <div class="mode-selector">
226
+ <button id="modeModelBtn" class="mode-btn active" onclick="switchMode('model')">Фото на модели</button>
227
+ <button id="modeObjectBtn" class="mode-btn" onclick="switchMode('object')">Предметное фото</button>
228
+ </div>
 
 
 
 
 
 
229
 
230
+ <form id="promptForm">
231
+ <div class="form-grid">
232
+
233
+ <!-- === MODEL PHOTOGRAPHY MODE === -->
234
+ <div id="modelMode" class="form-mode active">
235
+ <div class="form-group">
236
+ <label for="gender">Пол</label>
237
+ <select id="gender" onchange="autoAdjustDefaults()">
238
+ <option value="Woman">Женщина</option>
239
+ <option value="Man">Мужчина</option>
240
+ </select>
241
+ </div>
242
+ <div class="form-group">
243
+ <label for="age">Возраст</label>
244
+ <select id="age">
245
+ <option value="18 years old">18 лет</option>
246
+ <option value="20-25 years old" selected>20-25 лет</option>
247
+ <option value="25-30 years old">25-30 лет</option>
248
+ <option value="30-40 years old">30-40 лет</option>
249
+ </select>
250
+ </div>
251
+ <div class="form-group">
252
+ <label for="nationality">Внешность/Этнос</label>
253
+ <select id="nationality">
254
+ <option value="Eastern European">Восточная Европа</option>
255
+ <option value="Northern European">Скандинавская</option>
256
+ <option value="Asian">Азиатская</option>
257
+ <option value="Latin American">Латиноамериканская</option>
258
+ <option value="Mixed Race">Смешанная</option>
259
+ </select>
260
+ </div>
261
+ <div class="form-group">
262
+ <label for="bodyType">Телосложение</label>
263
+ <select id="bodyType">
264
+ <option value="Fit and slim">Стройное/Подтянутое</option>
265
+ <option value="Athletic">Спортивное</option>
266
+ <option value="Curvy">Пышное (Curvy)</option>
267
+ <option value="Skinny model look">Модельная худоба</option>
268
+ </select>
269
+ </div>
270
+ <div class="form-group">
271
+ <label for="hairColor">Цвет волос</label>
272
+ <select id="hairColor">
273
+ <option value="Brunette">Брюнет</option>
274
+ <option value="Blonde">Блонд</option>
275
+ <option value="Black">Черные</option>
276
+ <option value="Redhead">Рыжие</option>
277
+ </select>
278
+ </div>
279
+ <div class="form-group">
280
+ <label for="hairstyle">Стрижка</label>
281
+ <select id="hairstyle">
282
+ <option value="Long loose wavy hair">Длинные волны</option>
283
+ <option value="Straight long hair">Длинные прямые</option>
284
+ <option value="Messy bun">Небрежный пучок</option>
285
+ <option value="Bob cut">Каре</option>
286
+ <option value="Fade cut">Фейд (Мужской)</option>
287
+ </select>
288
+ </div>
289
+ <div class="form-group">
290
+ <label for="emotion">Эмоция/Выражение лица</label>
291
+ <select id="emotion">
292
+ <option value="Confident look">Уверенный взгляд</option>
293
+ <option value="Smiling gently">Легкая улыбка</option>
294
+ <option value="Serious and thoughtful">Серьезное и вдумчивое</option>
295
+ <option value="Playful wink">Игривое подмигивание</option>
296
+ <option value="Mysterious gaze">Загадочный взгляд</option>
297
+ </select>
298
+ </div>
299
+ <div class="form-group">
300
+ <label for="light">Свет</label>
301
+ <select id="light">
302
+ <option value="volumetric lighting">Объемный студийный</option>
303
+ <option value="cinematic lighting">Кинематографичный</option>
304
+ <option value="natural morning light">Естественный утренний</option>
305
+ <option value="dramatic side light">Драматичный боковой</option>
306
+ <option value="neon lights">Неоновый</option>
307
+ </select>
308
+ </div>
309
+ <div class="form-group full-width">
310
+ <label for="style">Эстетика</label>
311
+ <select id="style">
312
+ <option value="Raw Candid Photography">Живое фото (Raw)</option>
313
+ <option value="Cinematic Movie Still">Кадр из фильма</option>
314
+ <option value="Fashion Editorial">Модный журнал</option>
315
+ <option value="Street Style Photo">Уличный стиль</option>
316
+ <option value="Dark Moody Atmosphere">Мрачная атмосфера</option>
317
+ <option value="Vintage Analog Film">Пленка (Vintage)</option>
318
+ </select>
319
+ </div>
320
+ <div class="form-group full-width">
321
+ <label for="model_details">Детали (Одежда, Действие, Локация)</label>
322
+ <textarea id="model_details" placeholder="Например: в черном кожаном плаще, идет по дождливой улице Токио, смотрит в камеру"></textarea>
323
+ </div>
324
+ </div>
325
+
326
+ <!-- === OBJECT PHOTOGRAPHY MODE === -->
327
+ <div id="objectMode" class="form-mode">
328
+ <div class="form-group full-width">
329
+ <label for="object_name">Название/Описание предмета</label>
330
+ <input type="text" id="object_name" placeholder="Например: флакон духов, кроссовки, часы">
331
+ </div>
332
+ <div class="form-group">
333
+ <label for="object_style">Стилистика съемки</label>
334
+ <select id="object_style">
335
+ <option value="Minimalism on a cyclorama">Минимализм на циклораме</option>
336
+ <option value="Lifestyle, in context">Лайфстайл (в контексте)</option>
337
+ <option value="Detailed macro shot">Макросъемка деталей</option>
338
+ <option value="Levitation shot">Левитация (в воздухе)</option>
339
+ <option value="Creative flat lay">Креативная раскладка (Flat lay)</option>
340
+ </select>
341
+ </div>
342
+ <div class="form-group">
343
+ <label for="object_background">Тип фона</label>
344
+ <select id="object_background">
345
+ <option value="clean studio background (white/grey)">Однотонный студийный</option>
346
+ <option value="on a wooden surface">Деревянная поверхность</option>
347
+ <option value="on a marble surface">Мрамор</option>
348
+ <option value="on a concrete texture">Бетон</option>
349
+ <option value="on a silk/linen fabric">Ткань (шелк/лен)</option>
350
+ <option value="on a natural surface (moss, sand, water)">Природный (мох, песок, вода)</option>
351
+ </select>
352
+ </div>
353
+ <div class="form-group full-width">
354
+ <label for="object_details">Дополнительные детали</label>
355
+ <textarea id="object_details" placeholder="Например: капли воды на флаконе, рядом лежат кофейные зерна"></textarea>
356
+ </div>
357
+ <div class="form-group full-width">
358
+ <label class="checkbox-label">Креативность</label>
359
+ <div class="checkbox-container">
360
+ <input type="checkbox" id="creative_mode" onchange="toggleCreativeMode()">
361
+ <label for="creative_mode" style="color: var(--text); text-transform: none; letter-spacing: 0;">Креативный фон от ИИ (игнорирует "Тип фона")</label>
362
+ </div>
363
+ </div>
364
+ </div>
365
  </div>
366
 
367
+ <div class="btn-container">
368
+ <button type="button" class="action-btn" onclick="processAndOpen()">
369
+ <span>Launch Synkris AI</span>
370
+ <span style="font-size: 1.2em">⚡</span>
371
+ </button>
372
  </div>
373
+ </form>
 
 
 
 
 
 
 
 
374
  </div>
375
 
376
  <script>
377
+ let currentMode = 'model';
378
+
379
+ function switchMode(mode) {
380
+ currentMode = mode;
381
+ document.getElementById('modelMode').classList.toggle('active', mode === 'model');
382
+ document.getElementById('objectMode').classList.toggle('active', mode === 'object');
383
+ document.getElementById('modeModelBtn').classList.toggle('active', mode === 'model');
384
+ document.getElementById('modeObjectBtn').classList.toggle('active', mode === 'object');
 
 
 
 
 
 
385
  }
386
 
387
+ function autoAdjustDefaults() {
388
+ if (currentMode !== 'model') return;
389
+ const gender = document.getElementById('gender').value;
390
+ const hairstyle = document.getElementById('hairstyle');
391
+ const bodyType = document.getElementById('bodyType');
392
+
393
+ if (gender === 'Man') {
394
+ hairstyle.value = 'Fade cut';
395
+ bodyType.value = 'Athletic';
396
+ } else {
397
+ hairstyle.value = 'Long loose wavy hair';
398
+ bodyType.value = 'Fit and slim';
399
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  }
401
+
402
+ function toggleCreativeMode() {
403
+ const isCreative = document.getElementById('creative_mode').checked;
404
+ document.getElementById('object_background').disabled = isCreative;
405
  }
406
 
 
 
 
 
407
 
408
+ async function processAndOpen() {
409
+ const btn = document.querySelector('.action-btn');
410
+ const originalText = btn.innerHTML;
411
+ let fullPrompt = '';
412
+
413
+ if (currentMode === 'model') {
414
+ const gender = document.getElementById('gender').value;
415
+ const age = document.getElementById('age').value;
416
+ const nationality = document.getElementById('nationality').value;
417
+ const bodyType = document.getElementById('bodyType').value;
418
+ const hairColor = document.getElementById('hairColor').value;
419
+ const hairstyle = document.getElementById('hairstyle').value;
420
+ const emotion = document.getElementById('emotion').value;
421
+ const light = document.getElementById('light').value;
422
+ const style = document.getElementById('style').value;
423
+ const details = document.getElementById('model_details').value || "in a casual stylish outfit, standing confidently";
424
+
425
+ fullPrompt = `Full body shot, wide angle view, visible shoes and legs. A photorealistic ${style} of a ${age} ${nationality} ${gender}.
426
+ Appearance: ${bodyType} physique, ${hairColor} ${hairstyle}, ${emotion}, realistic skin texture with pores and natural imperfections.
427
+ Context: ${details}.
428
+ Technical: 8k resolution, raw photo, unedited look, fujifilm xt4, sharp focus, ${light}, hyper-detailed, alive, non-artificial, masterpiece.`;
429
+
430
+ } else { // Object mode
431
+ const objectName = document.getElementById('object_name').value || "a product";
432
+ const objectStyle = document.getElementById('object_style').value;
433
+ const isCreative = document.getElementById('creative_mode').checked;
434
+ const objectDetails = document.getElementById('object_details').value || "clean and elegant";
435
+
436
+ let background = '';
437
+ if (isCreative) {
438
+ background = "on a creative, surreal, and artistic background generated by AI to complement the product's essence";
439
+ } else {
440
+ background = document.getElementById('object_background').value;
441
+ }
442
+
443
+ fullPrompt = `Professional product photography, ${objectStyle}.
444
+ Subject: A hyper-detailed shot of ${objectName}.
445
+ Context: ${background}. With additional details: ${objectDetails}.
446
+ Technical: 8k resolution, commercial studio quality, sharp focus, perfect lighting, ultra-realistic, masterpiece.`;
447
+ }
448
+
449
 
450
+ const data = {
451
+ prompt: fullPrompt.replace(/\s+/g, ' ').trim(),
452
+ negative_prompt: "cropped, watermark, text, 3d render, cartoon, anime, plastic look, doll, artificial, blurry, distorted, malformed, ugly",
453
+ aspect_ratio: "9:16"
454
+ };
455
+
456
+ const jsonString = JSON.stringify(data, null, 2);
457
+
458
+ try {
459
+ await navigator.clipboard.writeText(jsonString);
460
+ btn.style.backgroundColor = "#fff";
461
+ btn.style.color = "#000";
462
+ btn.innerHTML = "SYSTEM READY. LAUNCHING... 🚀";
463
+
464
+ setTimeout(() => {
465
+ window.open('https://lmarena.ai/ru?chat-modality=image&mode=direct', '_blank');
466
+ setTimeout(() => {
467
+ btn.style.backgroundColor = "";
468
+ btn.style.color = "";
469
+ btn.innerHTML = originalText;
470
+ }, 1000);
471
+ }, 800);
472
+ } catch (err) {
473
+ console.error('Failed to copy: ', err);
474
+ alert("Не удалось скопировать. Пожалуйста, скопируйте вручную.");
475
+ }
476
  }
477
 
478
+ document.addEventListener('DOMContentLoaded', () => {
479
+ switchMode('model');
480
+ autoAdjustDefaults();
481
+ });
482
  </script>
483
 
484
  </body>
485
+ </html>