Elias207 commited on
Commit
4d281d4
·
verified ·
1 Parent(s): 78944c3

Update static/css/style.css

Browse files
Files changed (1) hide show
  1. static/css/style.css +469 -446
static/css/style.css CHANGED
@@ -1,4 +1,5 @@
1
  :root { --bg: #0f0f0f; --surface: #1e1e1e; --primary: #7C4DFF; --text: #fff; --highlight: #2a2a2a; --panel-bg: #151515; --static-color: #A020F0; --accent-orange: #FF7043; --danger-red: #ff5252; --chip-bg: #2c2c2c; --input-bg: #2a2a2a; }
 
2
  * { box-sizing: border-box; user-select: none; -webkit-tap-highlight-color: transparent; outline: none; }
3
 
4
  body { margin: 0; background: var(--bg); color: var(--text); font-family: 'Vazirmatn'; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; min-height: 100vh; padding-bottom: 50px;}
@@ -9,9 +10,9 @@ body { margin: 0; background: var(--bg); color: var(--text); font-family: 'Vazir
9
 
10
  .projects-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; padding-bottom: 80px; }
11
 
12
- .project-card {
13
- background: #252525; border-radius: 20px; overflow: hidden; position: relative;
14
- box-shadow: 0 4px 10px rgba(0,0,0,0.3); transition: 0.2s; cursor: pointer; aspect-ratio: 1 / 1.1; display: flex; flex-direction: column;
15
  }
16
  .project-card:active { transform: scale(0.97); }
17
 
@@ -56,31 +57,29 @@ body { margin: 0; background: var(--bg); color: var(--text); font-family: 'Vazir
56
  .modal-btn { flex: 1; padding: 12px; border-radius: 12px; border: none; font-family: inherit; font-weight: bold; cursor: pointer; transition: 0.2s; }
57
  .btn-confirm { background: var(--primary); color: #fff; }
58
  .btn-cancel { background: #333; color: #fff; }
59
- .btn-confirm-action.split { background: #00C853; }
60
- .btn-confirm-action.delete { background: #d32f2f; }
61
 
62
  #editorScreen { display: none; width: 100%; flex-direction: column; min-height: 100vh; }
63
  .top-bar { position: sticky; top: 0; height: 60px; background: rgba(30,30,30,0.95); backdrop-filter: blur(10px); display: flex; align-items: center; justify-content: space-between; padding: 0 20px; z-index: 100; border-bottom: 1px solid #333; box-shadow: 0 4px 10px rgba(0,0,0,0.3); }
64
  .btn-home { background: transparent; color: #ccc; border: none; font-size: 1.2rem; cursor: pointer; padding: 10px; }
65
 
66
- /* اصلاح شده برای وسط‌چین کردن دقیق ویدیو */
67
- #workspace {
68
- width: 100%;
69
- display: flex;
70
- justify-content: center;
71
- align-items: center; /* مرکز در محور عمودی */
72
- background: #000;
73
- padding: 20px 0;
74
- min-height: 300px;
75
- flex-shrink: 0;
76
- overflow: hidden; /* جلوگیری از اسکرول اضافه */
77
- }
78
- #scaler {
79
- transform-origin: center center; /* بزرگ‌نمایی از مرکز */
80
- transition: transform 0.1s ease-out;
81
- display: flex;
82
- justify-content: center;
83
- align-items: center;
84
  }
85
  #videoContainer { position: relative; background: #000; overflow: hidden; cursor: pointer; box-shadow: 0 0 30px rgba(124, 77, 255, 0.1); border-radius: 8px;}
86
  video { width: 100%; height: 100%; object-fit: contain; display: block; }
@@ -116,22 +115,46 @@ video { width: 100%; height: 100%; object-fit: contain; display: block; }
116
  label { display: block; margin-bottom: 8px; color: #ccc; font-size: 0.9rem; }
117
  textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; padding: 15px; border-radius: 12px; font-family: inherit; font-size: 1rem; margin-bottom: 15px; resize: vertical; min-height: 80px; }
118
 
119
- .style-grid { display: flex; flex-direction: column; gap: 15px; width: 100%; }
 
 
120
  .style-grid-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
121
- .style-card { background: #333; border: 2px solid transparent; border-radius: 15px; padding: 15px 20px; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 110px; width: 100%; position: relative; transition: all 0.2s; box-shadow: 0 4px 6px rgba(0,0,0,0.2); }
122
- .style-grid-2col .style-card { min-height: 100px; height: auto; gap: 8px; padding: 10px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  .style-card:active { transform: scale(0.98); }
124
  .style-card.selected { border-color: var(--primary); background: #2a2a2a; }
125
- .style-card.selected::after { content: '\f00c'; font-family: "Font Awesome 6 Free"; font-weight: 900; position: absolute; top: 10px; left: 10px; font-size: 0.8rem; color: #fff; background: var(--primary); width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 5px rgba(0,0,0,0.3); }
126
-
127
- .card-info { display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 12px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.1); }
128
- .card-title-style { font-weight: bold; font-size: 1rem; color: #fff; white-space: nowrap; }
129
- .card-desc { color: #aaa; font-size: 0.85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
130
- .anim-box { font-family: 'Lalezar'; font-size: 1.3rem; direction: rtl; display: flex; gap: 5px; margin-bottom: 5px; }
131
- .anim-word { color: white; transition: 0.2s; padding: 0 3px; border-radius: 4px;}
132
- .anim-word.active { color: #fff; background-color: #A020F0; transform: scale(1.05); padding: 0 6px; }
 
133
  .static-anim.active { background-color: var(--static-color) !important; color: #fff; }
134
- .card-settings { position: absolute; bottom: 10px; left: 10px; width: 35px; height: 35px; background: rgba(255,255,255,0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 1rem; transition: 0.2s; z-index: 5; border: 1px solid rgba(255,255,255,0.1); }
 
 
135
  .mode-btn { flex: 1; padding: 12px; border-radius: 8px; background: #333; color: #aaa; border: 2px solid transparent; cursor: pointer; }
136
  .mode-btn.active { background: var(--primary); color: #fff; border-color: var(--primary); }
137
  .font-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@@ -152,16 +175,16 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
152
  .text-editor-ui { display: flex; flex-direction: column; width: 100%; height: 100%; background-color: var(--surface); padding-bottom: 10px; }
153
 
154
  .toolbar-area {
155
- height: 60px; display: flex; align-items: center; justify-content: center; gap: 20px;
156
- opacity: 0; transform: translateY(20px); transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
157
- pointer-events: none; margin-top: 10px;
158
  }
159
  .toolbar-area.show { opacity: 1; transform: translateY(0); pointer-events: all; }
160
 
161
  .tool-circle {
162
- width: 45px; height: 45px; border-radius: 50%; background: #252525;
163
- border: 1px solid #444; color: #ccc; display: flex; align-items: center; justify-content: center;
164
- font-size: 1.1rem; cursor: pointer; transition: 0.2s;
165
  }
166
  .tool-circle:active { transform: scale(0.9); border-color: var(--primary); color: var(--primary); }
167
  .tool-circle.active-state { background: rgba(124, 77, 255, 0.15); border-color: var(--primary); color: var(--primary); }
@@ -170,17 +193,17 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
170
  .global-time-text { color: #888; font-size: 0.8rem; font-family: monospace; direction: ltr; }
171
 
172
  .timeline-scroll-area {
173
- flex: 1; width: 100%; overflow-x: auto; white-space: nowrap; padding: 15px 0;
174
- display: flex; align-items: center; scrollbar-width: none;
175
  }
176
  .timeline-scroll-area::-webkit-scrollbar { display: none; }
177
  .spacer { min-width: 50vw; }
178
 
179
  .word-chip {
180
- background-color: var(--chip-bg); color: #aaa; padding: 8px 18px;
181
- border-radius: 12px; margin: 0 4px; font-size: 0.95rem; cursor: pointer;
182
- transition: 0.2s; display: inline-flex; align-items: center; justify-content: center;
183
- border: 1px solid transparent;
184
  }
185
  .word-chip.active { background-color: var(--primary); color: #fff; font-weight: bold; transform: scale(1.1); }
186
  .newline-indicator { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: #555; margin: 0 10px; }
@@ -189,11 +212,11 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
189
  .bottom-sheet-overlay.show { display: flex; }
190
 
191
  .bottom-sheet {
192
- width: 100%; background: var(--surface); border-top-left-radius: 30px; border-top-right-radius: 30px;
193
- padding: 25px 25px 80px 25px; transform: translateY(100%);
194
- transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);
195
- display: none; flex-direction: column; gap: 20px;
196
- box-shadow: 0 -10px 40px rgba(0,0,0,0.6);
197
  }
198
  .bottom-sheet.active { display: flex; transform: translateY(0); }
199
 
@@ -224,307 +247,307 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
224
  .highlight-word { color: var(--primary); font-weight: bold; padding: 0 5px; }
225
 
226
  /* --- استایل‌های لودینگ نئونی جدید --- */
227
- /* تنظیمات متغیرها برای لودر */
228
  #loader {
229
- --color-1: #b000ff;
230
- --color-2: #0077ff;
231
- --color-3: #00eeff;
232
- --bg-dark: #090909;
233
- --bg-light: #1a1a2e;
234
-
235
- position: fixed;
236
- top: 0;
237
- left: 0;
238
- width: 100%;
239
- height: 100%;
240
- z-index: 6000;
241
- display: none; /* توسط JS کنترل می‌شود */
242
- justify-content: center;
243
- align-items: center;
244
- background: radial-gradient(circle at center, var(--bg-light) 0%, var(--bg-dark) 100%);
245
- font-family: 'Tahoma', sans-serif;
246
- overflow: hidden;
247
- }
248
-
249
- /* استایل صفحه نتیجه را جدا کردیم چون لودر عوض شد */
 
250
  #resultScreen {
251
- position: fixed; top:0; left:0; width:100%; height:100%; background: var(--bg); z-index: 6000; display: none; flex-direction: column; justify-content: center; align-items: center;
252
  }
253
 
254
  .loader-wrapper {
255
- display: flex;
256
- flex-direction: column;
257
- align-items: center;
258
- position: relative;
259
  }
260
 
261
  /* هاله نور پشت کل لودر */
262
  .loader-wrapper::before {
263
- content: '';
264
- position: absolute;
265
- top: 20%;
266
- width: 300px;
267
- height: 300px;
268
- background: radial-gradient(circle, rgba(124, 77, 255, 0.15) 0%, transparent 70%);
269
- border-radius: 50%;
270
- z-index: -1;
271
- filter: blur(20px);
272
  }
273
 
274
  .modern-loader {
275
- position: relative;
276
- width: 160px;
277
- height: 160px;
278
- margin-bottom: 50px;
279
- display: flex;
280
- justify-content: center;
281
- align-items: center;
282
  }
283
 
284
  .loader-ring {
285
- position: absolute;
286
- border-radius: 50%;
287
- border: 3px solid transparent;
288
- border-top-color: var(--ring-color);
289
- animation: spin var(--dur) cubic-bezier(0.5, 0, 0.5, 1) infinite;
290
  }
291
 
292
  /* اضافه کردن نقطه نورانی به سر حلقه‌ها */
293
  .loader-ring::before {
294
- content: '';
295
- position: absolute;
296
- border-radius: 50%;
297
- width: 8px;
298
- height: 8px;
299
- background: var(--ring-color);
300
- box-shadow: 0 0 15px 2px var(--ring-color);
301
- top: -5px;
302
- right: 50%;
303
- transform: translateX(50%);
304
  }
305
 
306
  /* حلقه اول */
307
  .loader-ring:nth-child(1) {
308
- width: 100%;
309
- height: 100%;
310
- --ring-color: var(--color-1);
311
- --dur: 2.5s;
312
- filter: drop-shadow(0 0 10px rgba(176, 0, 255, 0.5));
313
  }
314
 
315
  /* حلقه دوم */
316
  .loader-ring:nth-child(2) {
317
- width: 75%;
318
- height: 75%;
319
- --ring-color: var(--color-2);
320
- --dur: 2s;
321
- animation-direction: reverse;
322
- filter: drop-shadow(0 0 10px rgba(0, 119, 255, 0.5));
323
  }
324
 
325
  /* حلقه سوم */
326
  .loader-ring:nth-child(3) {
327
- width: 50%;
328
- height: 50%;
329
- --ring-color: var(--color-3);
330
- --dur: 1.5s;
331
- filter: drop-shadow(0 0 10px rgba(0, 238, 255, 0.5));
332
  }
333
 
334
  .loader-icon {
335
- font-size: 3rem;
336
- color: #fff;
337
- animation: float-pulse 3s ease-in-out infinite;
338
- filter: drop-shadow(0 0 20px var(--color-1));
339
- z-index: 10;
340
  }
341
 
342
  .text-container {
343
- text-align: center;
344
- position: relative;
345
- z-index: 2;
346
  }
347
 
348
  .loading-title {
349
- font-size: 1.5rem;
350
- font-weight: 800;
351
- margin-bottom: 12px;
352
- letter-spacing: -0.5px;
353
- background: linear-gradient(135deg, #fff 30%, var(--color-2), var(--color-1));
354
- -webkit-background-clip: text;
355
- -webkit-text-fill-color: transparent;
356
- text-shadow: 0 0 30px rgba(124, 77, 255, 0.3);
357
- animation: text-glow 3s ease-in-out infinite alternate;
358
  }
359
 
360
  .loading-sub {
361
- font-size: 1rem;
362
- color: #a0a0a0;
363
- font-weight: 300;
364
- letter-spacing: 1px;
365
- opacity: 0.8;
366
- animation: fade-text 2s infinite alternate;
367
  }
368
 
369
  /* انیمیشن‌ها */
370
- @keyframes spin {
371
- 0% { transform: rotate(0deg); }
372
- 100% { transform: rotate(360deg); }
373
  }
374
 
375
  @keyframes float-pulse {
376
- 0%, 100% {
377
- transform: scale(1) translateY(0);
378
- opacity: 0.8;
379
- filter: drop-shadow(0 0 10px var(--color-1));
380
- }
381
- 50% {
382
- transform: scale(1.1) translateY(-5px);
383
- opacity: 1;
384
- filter: drop-shadow(0 0 25px var(--color-3));
385
- }
386
  }
387
 
388
  @keyframes text-glow {
389
- from { text-shadow: 0 0 10px rgba(124, 77, 255, 0.2); }
390
- to { text-shadow: 0 0 20px rgba(124, 77, 255, 0.6); }
391
  }
392
 
393
  @keyframes fade-text {
394
- from { opacity: 0.5; }
395
- to { opacity: 1; }
396
  }
397
 
398
  /* ========================================= */
399
  /* === استایل‌های بخش ظاهر (نئونی) === */
400
  /* ========================================= */
401
  #section-appearance {
402
- --track-off: #27272a;
403
- --neon-primary: #8b5cf6;
404
- --neon-secondary: #ec4899;
405
  }
406
 
407
  .controls-panel {
408
- width: 100%;
409
- background: #18181b;
410
- border-radius: 24px;
411
- padding: 25px;
412
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
413
- border: 1px solid #333;
414
- margin-top: 10px;
415
  }
416
 
417
  .control-group {
418
- margin-bottom: 30px;
419
  }
420
  .control-group:last-child { margin-bottom: 0; }
421
 
422
  .header-neon {
423
- display: flex;
424
- justify-content: space-between;
425
- align-items: center;
426
- margin-bottom: 15px;
427
  }
428
 
429
  .title-neon {
430
- display: flex;
431
- align-items: center;
432
- gap: 10px;
433
- font-weight: 700;
434
- font-size: 0.95rem;
435
- color: #e4e4e7;
436
  }
437
 
438
  .title-neon i {
439
- color: var(--neon-primary);
440
- font-size: 1.1rem;
441
- text-shadow: 0 0 10px rgba(139, 92, 246, 0.5);
442
  }
443
 
444
  .percent-badge {
445
- font-family: monospace;
446
- font-size: 1rem;
447
- font-weight: bold;
448
- color: #fff;
449
- background: rgba(139, 92, 246, 0.15);
450
- padding: 4px 12px;
451
- border-radius: 8px;
452
- border: 1px solid rgba(139, 92, 246, 0.3);
453
- min-width: 60px;
454
- text-align: center;
455
  }
456
 
457
  .range-container {
458
- position: relative;
459
- width: 100%;
460
- height: 30px;
461
- display: flex;
462
- align-items: center;
463
  }
464
 
465
  .range-container input[type=range] {
466
- -webkit-appearance: none;
467
- width: 100%;
468
- background: transparent;
469
- cursor: pointer;
470
- z-index: 2;
471
- margin: 0;
472
  }
473
 
474
  .range-container input[type=range]::-webkit-slider-runnable-track {
475
- width: 100%;
476
- height: 8px;
477
- background: var(--track-off);
478
- border-radius: 20px;
479
- border: none;
480
- background-image: linear-gradient(90deg, var(--neon-primary), var(--neon-secondary));
481
- background-size: 0% 100%;
482
- background-repeat: no-repeat;
483
  }
484
 
485
  .range-container input[type=range]::-webkit-slider-thumb {
486
- -webkit-appearance: none;
487
- height: 24px;
488
- width: 24px;
489
- border-radius: 50%;
490
- background: #fff;
491
- margin-top: -8px;
492
- border: 4px solid #18181b;
493
- box-shadow: 0 0 0 2px var(--neon-primary), 0 0 15px rgba(139, 92, 246, 0.8);
494
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
495
  }
496
 
497
  .range-container input[type=range]:active::-webkit-slider-thumb {
498
- transform: scale(1.3);
499
- background: var(--neon-primary);
500
- border-color: #fff;
501
- box-shadow: 0 0 0 0 transparent, 0 0 25px rgba(236, 72, 153, 0.9);
502
  }
503
 
504
  .center-marker {
505
- position: absolute;
506
- left: 50%;
507
- top: 50%;
508
- transform: translate(-50%, -50%);
509
- width: 2px;
510
- height: 12px;
511
- background: rgba(255,255,255,0.2);
512
- z-index: 1;
513
- pointer-events: none;
514
  }
515
 
516
  /* ========================================= */
517
  /* === PRO COLOR PICKER STYLES (iOS/Luxury) === */
518
  /* ========================================= */
519
  :root {
520
- --glass: rgba(28,28,30,.72);
521
- --glass2: rgba(44,44,46,.80);
522
- --stroke: rgba(255,255,255,.10);
523
- --shadow-lg: 0 22px 60px rgba(0,0,0,.62);
524
- --shadow-md: 0 12px 30px rgba(0,0,0,.46);
525
- --shadow-sm: 0 8px 18px rgba(0,0,0,.36);
526
- --separator: rgba(84,84,88,.38);
527
- --ok: #34C759;
528
  }
529
 
530
  .toast-notification{ position: fixed; top: calc(16px + env(safe-area-inset-top)); left: 50%; transform: translateX(-50%) translateY(-18px); background: rgba(28,28,30,.78); -webkit-backdrop-filter: blur(18px) saturate(170%); backdrop-filter: blur(18px) saturate(170%); border: 1px solid rgba(255,255,255,.12); box-shadow: var(--shadow-md); color: #fff; padding: 12px 18px; border-radius: 999px; z-index: 20000; font-size: .9rem; font-weight: 900; opacity: 0; visibility: hidden; transition: opacity .25s ease, transform .25s ease, visibility .25s ease; display:flex; align-items:center; gap: 10px; pointer-events:none; }
@@ -592,34 +615,34 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
592
 
593
  /* FIX: Photoshop Checkered Pattern for Alpha Container & Preview */
594
  .alpha-checkered {
595
- width: 100%;
596
- height: 42px;
597
- border-radius: 16px;
598
- background-image: conic-gradient(#dedede 0.25turn, #ffffff 0.25turn 0.5turn, #dedede 0.5turn 0.75turn, #ffffff 0.75turn);
599
- background-size: 14px 14px;
600
- background-position: top left;
601
- overflow: hidden;
602
- display: flex;
603
- align-items: center;
604
- padding: 0 12px;
605
- border: 1px solid rgba(255,255,255,.10);
606
  }
607
 
608
  /* Footer & Large Preview Fix */
609
  .picker-footer{ margin-top: auto; padding: 12px 16px 0 16px; display:flex; align-items:center; justify-content:space-between; gap: 12px; border-top: 1px solid var(--separator); flex-shrink: 0; background: transparent; }
610
 
611
  /* FIX: Photoshop Checkered Pattern for Large Preview */
612
- .large-preview {
613
- width: 64px;
614
- height: 64px;
615
- border-radius: 18px;
616
- border: 1px solid rgba(255,255,255,.12);
617
- box-shadow: 0 14px 24px rgba(0,0,0,.24);
618
- flex-shrink: 0;
619
- /* الگوی شطرنجی دقیق فتوشاپ */
620
- background-image: conic-gradient(#dedede 0.25turn, #ffffff 0.25turn 0.5turn, #dedede 0.5turn 0.75turn, #ffffff 0.75turn);
621
- background-size: 16px 16px;
622
- background-position: center;
623
  }
624
 
625
  .saved-colors-container{ display:flex; gap: 10px; align-items:center; flex-wrap: wrap; flex:1; justify-content:flex-end; max-height: 90px; overflow-y:auto; padding-right: 4px; }
@@ -657,47 +680,47 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
657
  /* === استایل‌های جدید برای بخش ظاهر (Appearance) === */
658
  /* ================================================== */
659
  #section-appearance .controls-panel {
660
- padding: 15px; /* کاهش پدینگ کلی برای جای دادن پنل‌های داخلی */
661
  }
662
 
663
  /* پنل‌های داخلی برای گروه‌بندی کنترل‌ها */
664
  .control-group-panel {
665
- background-color: #1f1f23; /* کمی روشن‌تر از پس‌زمینه اصلی پنل */
666
- border: 1px solid #3a3a3e;
667
- border-radius: 18px;
668
- padding: 20px;
669
- margin-bottom: 20px;
670
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
671
  }
672
  .control-group-panel:last-child {
673
- margin-bottom: 0;
674
  }
675
 
676
  /* بخش پیش‌نمایش زنده برای کادر */
677
  .box-preview-area {
678
- width: 100%;
679
- min-height: 90px;
680
- margin-bottom: 25px;
681
- padding: 15px;
682
- /* --- تغییر اصلی اینجاست --- */
683
- background-image: conic-gradient(#444 0.25turn, #333 0.25turn 0.5turn, #444 0.5turn 0.75turn, #333 0.75turn);
684
- background-size: 20px 20px;
685
- /* -------------------------- */
686
- border-radius: 12px;
687
- display: flex;
688
- justify-content: center;
689
- align-items: center;
690
- border: 1px solid #555; /* کمی روشن‌تر برای دیده شدن روی پترن */
691
  }
692
 
693
  .box-preview-element {
694
- color: #fff;
695
- font-size: 1.2rem;
696
- font-weight: bold;
697
- display: inline-block;
698
- white-space: nowrap;
699
- /* اینجا line-height وجود نداشت */
700
- transition: all 0.15s ease-out;
701
  }
702
 
703
  /* ======================================== */
@@ -705,45 +728,45 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
705
  /* ======================================== */
706
 
707
  .sheet-spinner-ring {
708
- width: 60px;
709
- height: 60px;
710
- border-radius: 50%;
711
- border: 4px solid #333;
712
- border-top-color: var(--primary);
713
- border-right-color: var(--primary);
714
- animation: ringSpin 1s cubic-bezier(0.5, 0, 0.5, 1) infinite;
715
  }
716
 
717
  @keyframes ringSpin {
718
- 0% { transform: rotate(0deg); }
719
- 100% { transform: rotate(360deg); }
720
  }
721
 
722
  .success-checkmark-anim {
723
- width: 80px;
724
- height: 80px;
725
- border-radius: 50%;
726
- background: rgba(0, 230, 118, 0.15);
727
- display: flex;
728
- align-items: center;
729
- justify-content: center;
730
- animation: successPop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
731
  }
732
 
733
  .success-checkmark-anim i {
734
- font-size: 3rem;
735
- color: #00e676;
736
- animation: checkScale 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.1s both;
737
  }
738
 
739
  @keyframes successPop {
740
- from { transform: scale(0); opacity: 0; }
741
- to { transform: scale(1); opacity: 1; }
742
  }
743
 
744
  @keyframes checkScale {
745
- from { transform: scale(0); }
746
- to { transform: scale(1); }
747
  }
748
 
749
  /* ======================================== */
@@ -751,39 +774,39 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
751
  /* ======================================== */
752
 
753
  .word-count-grid {
754
- display: flex;
755
- overflow-x: auto;
756
- padding: 10px 0;
757
- gap: 10px;
758
- width: 100%;
759
- scrollbar-width: none;
760
- -ms-overflow-style: none;
761
- justify-content: space-between;
762
  }
763
  .word-count-grid::-webkit-scrollbar {
764
- display: none;
765
  }
766
 
767
  .wc-btn {
768
- flex: 0 0 auto;
769
- width: 50px;
770
- height: 50px;
771
- border-radius: 14px;
772
- background: #333;
773
- color: #fff;
774
- border: 1px solid #444;
775
- font-size: 1.2rem;
776
- font-weight: bold;
777
- cursor: pointer;
778
- transition: 0.2s;
779
- display: flex;
780
- align-items: center;
781
- justify-content: center;
782
  }
783
  .wc-btn:active {
784
- background: var(--primary);
785
- border-color: var(--primary);
786
- transform: scale(0.9);
787
  }
788
 
789
  /* ======================================== */
@@ -791,139 +814,139 @@ textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; p
791
  /* ======================================== */
792
 
793
  .trimmer-header {
794
- display: flex;
795
- flex-direction: column;
796
- align-items: center;
797
- justify-content: center;
798
- gap: 10px;
799
- margin-bottom: 25px;
800
- width: 100%;
801
  }
802
 
803
  .trimmer-play-btn {
804
- width: 50px;
805
- height: 50px;
806
- border-radius: 50%;
807
- border: 2px solid var(--accent-orange);
808
- background: transparent;
809
- color: var(--accent-orange);
810
- font-size: 1.4rem;
811
- display: flex;
812
- align-items: center;
813
- justify-content: center;
814
- cursor: pointer;
815
- transition: transform 0.2s;
816
  }
817
  .trimmer-play-btn:active {
818
- transform: scale(0.9);
819
  }
820
 
821
  .trimmer-time-display {
822
- font-family: monospace;
823
- font-size: 1.2rem;
824
- color: #fff;
825
- font-weight: bold;
826
- direction: ltr;
827
  }
828
 
829
  .trimmer-body {
830
- display: flex;
831
- align-items: center;
832
- justify-content: space-between;
833
- width: 100%;
834
- gap: 10px;
835
- margin-bottom: 20px;
836
  }
837
 
838
  .word-preview-side {
839
- width: 60px;
840
- height: 60px;
841
- background: #222;
842
- border-radius: 12px;
843
- display: flex;
844
- align-items: center;
845
- justify-content: center;
846
- color: #777;
847
- font-size: 0.9rem;
848
- font-weight: bold;
849
- text-align: center;
850
- flex-shrink: 0;
851
  }
852
 
853
  .trimmer-container {
854
- flex: 1;
855
- position: relative;
856
- height: 60px;
857
- background: #000;
858
- border-radius: 10px;
859
- overflow: hidden;
860
- /* اگر بخواهیم هندل‌ها بیرون نزنند */
861
  }
862
 
863
  /* نوار کلی (ترک) */
864
  .timeline-strip {
865
- position: absolute;
866
- top: 50%;
867
- left: 10px; /* مارجین برای هندل‌ها */
868
- right: 10px;
869
- height: 40px;
870
- transform: translateY(-50%);
871
- background: linear-gradient(90deg, #333 0%, #444 50%, #333 100%);
872
- background-size: 20px 100%;
873
- border-radius: 4px;
874
  }
875
 
876
  /* بخش فعال (بین دو هندل) */
877
  .trim-track-active {
878
- position: absolute;
879
- top: 0;
880
- bottom: 0;
881
- background: rgba(255, 255, 255, 0.15);
882
- border-top: 2px solid #FDD835;
883
- border-bottom: 2px solid #FDD835;
884
- left: 0; /* این مقادیر با JS تغییر میکنن */
885
- right: 0; /* این مقادیر با JS تغییر میکنن */
886
  }
887
 
888
  /* هندل‌های زرد رنگ */
889
  .trim-handle {
890
- position: absolute;
891
- top: 0;
892
- bottom: 0;
893
- width: 20px;
894
- background: #FDD835;
895
- cursor: col-resize;
896
- display: flex;
897
- align-items: center;
898
- justify-content: center;
899
- color: #000;
900
- font-size: 0.8rem;
901
- z-index: 10;
902
- border-radius: 4px;
903
  }
904
 
905
  .trim-handle.left {
906
- left: 0; /* JS کنترل میکنه */
907
- border-top-left-radius: 8px;
908
- border-bottom-left-radius: 8px;
909
  }
910
 
911
  .trim-handle.right {
912
- right: 0; /* JS کنترل میکنه (right: 0 یعنی چسبیده به ته) */
913
- /* اما برای پوزیشن ابسولوت نسبت به پرنت، ما از style.left استفاده میکنیم */
914
- border-top-right-radius: 8px;
915
- border-bottom-right-radius: 8px;
916
  }
917
 
918
  .trimmer-current-word {
919
- text-align: center;
920
- background: #333;
921
- padding: 10px 20px;
922
- border-radius: 16px;
923
- color: #fff;
924
- font-size: 1.1rem;
925
- font-weight: bold;
926
- align-self: center;
927
- margin-bottom: 10px;
928
- min-width: 100px;
929
  }
 
1
  :root { --bg: #0f0f0f; --surface: #1e1e1e; --primary: #7C4DFF; --text: #fff; --highlight: #2a2a2a; --panel-bg: #151515; --static-color: #A020F0; --accent-orange: #FF7043; --danger-red: #ff5252; --chip-bg: #2c2c2c; --input-bg: #2a2a2a; }
2
+
3
  * { box-sizing: border-box; user-select: none; -webkit-tap-highlight-color: transparent; outline: none; }
4
 
5
  body { margin: 0; background: var(--bg); color: var(--text); font-family: 'Vazirmatn'; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; min-height: 100vh; padding-bottom: 50px;}
 
10
 
11
  .projects-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; padding-bottom: 80px; }
12
 
13
+ .project-card {
14
+ background: #252525; border-radius: 20px; overflow: hidden; position: relative;
15
+ box-shadow: 0 4px 10px rgba(0,0,0,0.3); transition: 0.2s; cursor: pointer; aspect-ratio: 1 / 1.1; display: flex; flex-direction: column;
16
  }
17
  .project-card:active { transform: scale(0.97); }
18
 
 
57
  .modal-btn { flex: 1; padding: 12px; border-radius: 12px; border: none; font-family: inherit; font-weight: bold; cursor: pointer; transition: 0.2s; }
58
  .btn-confirm { background: var(--primary); color: #fff; }
59
  .btn-cancel { background: #333; color: #fff; }
60
+ .btn-confirm-action.split { background: #00C853; }
61
+ .btn-confirm-action.delete { background: #d32f2f; }
62
 
63
  #editorScreen { display: none; width: 100%; flex-direction: column; min-height: 100vh; }
64
  .top-bar { position: sticky; top: 0; height: 60px; background: rgba(30,30,30,0.95); backdrop-filter: blur(10px); display: flex; align-items: center; justify-content: space-between; padding: 0 20px; z-index: 100; border-bottom: 1px solid #333; box-shadow: 0 4px 10px rgba(0,0,0,0.3); }
65
  .btn-home { background: transparent; color: #ccc; border: none; font-size: 1.2rem; cursor: pointer; padding: 10px; }
66
 
67
+ #workspace {
68
+ width: 100%;
69
+ display: flex;
70
+ justify-content: center;
71
+ align-items: center;
72
+ background: #000;
73
+ padding: 20px 0;
74
+ min-height: 300px;
75
+ flex-shrink: 0;
76
+ overflow: hidden;
77
+ }
78
+ #scaler {
79
+ transition: transform 0.1s ease-out;
80
+ display: flex;
81
+ justify-content: center;
82
+ align-items: center;
 
 
83
  }
84
  #videoContainer { position: relative; background: #000; overflow: hidden; cursor: pointer; box-shadow: 0 0 30px rgba(124, 77, 255, 0.1); border-radius: 8px;}
85
  video { width: 100%; height: 100%; object-fit: contain; display: block; }
 
115
  label { display: block; margin-bottom: 8px; color: #ccc; font-size: 0.9rem; }
116
  textarea { width: 100%; background: #222; color: #fff; border: 1px solid #444; padding: 15px; border-radius: 12px; font-family: inherit; font-size: 1rem; margin-bottom: 15px; resize: vertical; min-height: 80px; }
117
 
118
+ /* --- تغییرات اصلی این بخش: گرید و ابعاد کارت --- */
119
+ .style-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; width: 100%; }
120
+
121
  .style-grid-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
122
+
123
+ .style-card {
124
+ background: #333;
125
+ border: 2px solid transparent;
126
+ border-radius: 15px;
127
+ padding: 5px;
128
+ cursor: pointer;
129
+ display: flex;
130
+ flex-direction: column;
131
+ align-items: center;
132
+ justify-content: center;
133
+ min-height: 0; /* تغییر: حذف حداقل ارتفاع */
134
+ width: 100%;
135
+ position: relative;
136
+ transition: all 0.2s;
137
+ box-shadow: 0 4px 6px rgba(0,0,0,0.2);
138
+ aspect-ratio: 1.4 / 1; /* تغییر: اضافه شدن نسبت ابعاد */
139
+ }
140
+
141
+ .style-grid-2col .style-card { min-height: 100px; height: auto; gap: 8px; padding: 10px; aspect-ratio: auto; } /* ریست کردن aspect ratio برای بخش بالایی */
142
+
143
  .style-card:active { transform: scale(0.98); }
144
  .style-card.selected { border-color: var(--primary); background: #2a2a2a; }
145
+ .style-card.selected::after { content: '\f00c'; font-family: "Font Awesome 6 Free"; font-weight: 900; position: absolute; top: 8px; left: 8px; font-size: 0.7rem; color: #fff; background: var(--primary); width: 20px; height: 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 5px rgba(0,0,0,0.3); }
146
+
147
+ .card-info { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 100%; margin-top: 6px; padding-top: 4px; border-top: 1px solid rgba(255,255,255,0.1); text-align: center; }
148
+ .card-title-style { font-weight: bold; font-size: 0.8rem; color: #fff; white-space: nowrap; }
149
+ .card-desc { color: #aaa; font-size: 0.65rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
150
+
151
+ .anim-box { font-family: 'Lalezar'; font-size: 0.9rem; direction: rtl; display: flex; gap: 3px; margin-bottom: 5px; }
152
+ .anim-word { color: white; transition: 0.2s; padding: 0 2px; border-radius: 4px;}
153
+ .anim-word.active { color: #fff; background-color: #A020F0; transform: scale(1.05); padding: 0 4px; }
154
  .static-anim.active { background-color: var(--static-color) !important; color: #fff; }
155
+
156
+ .card-settings { position: absolute; bottom: 5px; left: 5px; width: 25px; height: 25px; background: rgba(255,255,255,0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 0.8rem; transition: 0.2s; z-index: 5; border: 1px solid rgba(255,255,255,0.1); }
157
+
158
  .mode-btn { flex: 1; padding: 12px; border-radius: 8px; background: #333; color: #aaa; border: 2px solid transparent; cursor: pointer; }
159
  .mode-btn.active { background: var(--primary); color: #fff; border-color: var(--primary); }
160
  .font-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
 
175
  .text-editor-ui { display: flex; flex-direction: column; width: 100%; height: 100%; background-color: var(--surface); padding-bottom: 10px; }
176
 
177
  .toolbar-area {
178
+ height: 60px; display: flex; align-items: center; justify-content: center; gap: 20px;
179
+ opacity: 0; transform: translateY(20px); transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
180
+ pointer-events: none; margin-top: 10px;
181
  }
182
  .toolbar-area.show { opacity: 1; transform: translateY(0); pointer-events: all; }
183
 
184
  .tool-circle {
185
+ width: 45px; height: 45px; border-radius: 50%; background: #252525;
186
+ border: 1px solid #444; color: #ccc; display: flex; align-items: center; justify-content: center;
187
+ font-size: 1.1rem; cursor: pointer; transition: 0.2s;
188
  }
189
  .tool-circle:active { transform: scale(0.9); border-color: var(--primary); color: var(--primary); }
190
  .tool-circle.active-state { background: rgba(124, 77, 255, 0.15); border-color: var(--primary); color: var(--primary); }
 
193
  .global-time-text { color: #888; font-size: 0.8rem; font-family: monospace; direction: ltr; }
194
 
195
  .timeline-scroll-area {
196
+ flex: 1; width: 100%; overflow-x: auto; white-space: nowrap; padding: 15px 0;
197
+ display: flex; align-items: center; scrollbar-width: none;
198
  }
199
  .timeline-scroll-area::-webkit-scrollbar { display: none; }
200
  .spacer { min-width: 50vw; }
201
 
202
  .word-chip {
203
+ background-color: var(--chip-bg); color: #aaa; padding: 8px 18px;
204
+ border-radius: 12px; margin: 0 4px; font-size: 0.95rem; cursor: pointer;
205
+ transition: 0.2s; display: inline-flex; align-items: center; justify-content: center;
206
+ border: 1px solid transparent;
207
  }
208
  .word-chip.active { background-color: var(--primary); color: #fff; font-weight: bold; transform: scale(1.1); }
209
  .newline-indicator { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: #555; margin: 0 10px; }
 
212
  .bottom-sheet-overlay.show { display: flex; }
213
 
214
  .bottom-sheet {
215
+ width: 100%; background: var(--surface); border-top-left-radius: 30px; border-top-right-radius: 30px;
216
+ padding: 25px 25px 80px 25px; transform: translateY(100%);
217
+ transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);
218
+ display: none; flex-direction: column; gap: 20px;
219
+ box-shadow: 0 -10px 40px rgba(0,0,0,0.6);
220
  }
221
  .bottom-sheet.active { display: flex; transform: translateY(0); }
222
 
 
247
  .highlight-word { color: var(--primary); font-weight: bold; padding: 0 5px; }
248
 
249
  /* --- استایل‌های لودینگ نئونی جدید --- */
 
250
  #loader {
251
+ --color-1: #b000ff;
252
+ --color-2: #0077ff;
253
+ --color-3: #00eeff;
254
+ --bg-dark: #090909;
255
+ --bg-light: #1a1a2e;
256
+
257
+ position: fixed;
258
+ top: 0;
259
+ left: 0;
260
+ width: 100%;
261
+ height: 100%;
262
+ z-index: 6000;
263
+ display: none;
264
+ justify-content: center;
265
+ align-items: center;
266
+ background: radial-gradient(circle at center, var(--bg-light) 0%, var(--bg-dark) 100%);
267
+ font-family: 'Tahoma', sans-serif;
268
+ overflow: hidden;
269
+
270
+ }
271
+
272
+ /* استایل صفحه نتیجه */
273
  #resultScreen {
274
+ position: fixed; top:0; left:0; width:100%; height:100%; background: var(--bg); z-index: 6000; display: none; flex-direction: column; justify-content: center; align-items: center;
275
  }
276
 
277
  .loader-wrapper {
278
+ display: flex;
279
+ flex-direction: column;
280
+ align-items: center;
281
+ position: relative;
282
  }
283
 
284
  /* هاله نور پشت کل لودر */
285
  .loader-wrapper::before {
286
+ content: '';
287
+ position: absolute;
288
+ top: 20%;
289
+ width: 300px;
290
+ height: 300px;
291
+ background: radial-gradient(circle, rgba(124, 77, 255, 0.15) 0%, transparent 70%);
292
+ border-radius: 50%;
293
+ z-index: -1;
294
+ filter: blur(20px);
295
  }
296
 
297
  .modern-loader {
298
+ position: relative;
299
+ width: 160px;
300
+ height: 160px;
301
+ margin-bottom: 50px;
302
+ display: flex;
303
+ justify-content: center;
304
+ align-items: center;
305
  }
306
 
307
  .loader-ring {
308
+ position: absolute;
309
+ border-radius: 50%;
310
+ border: 3px solid transparent;
311
+ border-top-color: var(--ring-color);
312
+ animation: spin var(--dur) cubic-bezier(0.5, 0, 0.5, 1) infinite;
313
  }
314
 
315
  /* اضافه کردن نقطه نورانی به سر حلقه‌ها */
316
  .loader-ring::before {
317
+ content: '';
318
+ position: absolute;
319
+ border-radius: 50%;
320
+ width: 8px;
321
+ height: 8px;
322
+ background: var(--ring-color);
323
+ box-shadow: 0 0 15px 2px var(--ring-color);
324
+ top: -5px;
325
+ right: 50%;
326
+ transform: translateX(50%);
327
  }
328
 
329
  /* حلقه اول */
330
  .loader-ring:nth-child(1) {
331
+ width: 100%;
332
+ height: 100%;
333
+ --ring-color: var(--color-1);
334
+ --dur: 2.5s;
335
+ filter: drop-shadow(0 0 10px rgba(176, 0, 255, 0.5));
336
  }
337
 
338
  /* حلقه دوم */
339
  .loader-ring:nth-child(2) {
340
+ width: 75%;
341
+ height: 75%;
342
+ --ring-color: var(--color-2);
343
+ --dur: 2s;
344
+ animation-direction: reverse;
345
+ filter: drop-shadow(0 0 10px rgba(0, 119, 255, 0.5));
346
  }
347
 
348
  /* حلقه سوم */
349
  .loader-ring:nth-child(3) {
350
+ width: 50%;
351
+ height: 50%;
352
+ --ring-color: var(--color-3);
353
+ --dur: 1.5s;
354
+ filter: drop-shadow(0 0 10px rgba(0, 238, 255, 0.5));
355
  }
356
 
357
  .loader-icon {
358
+ font-size: 3rem;
359
+ color: #fff;
360
+ animation: float-pulse 3s ease-in-out infinite;
361
+ filter: drop-shadow(0 0 20px var(--color-1));
362
+ z-index: 10;
363
  }
364
 
365
  .text-container {
366
+ text-align: center;
367
+ position: relative;
368
+ z-index: 2;
369
  }
370
 
371
  .loading-title {
372
+ font-size: 1.5rem;
373
+ font-weight: 800;
374
+ margin-bottom: 12px;
375
+ letter-spacing: -0.5px;
376
+ background: linear-gradient(135deg, #fff 30%, var(--color-2), var(--color-1));
377
+ -webkit-background-clip: text;
378
+ -webkit-text-fill-color: transparent;
379
+ text-shadow: 0 0 30px rgba(124, 77, 255, 0.3);
380
+ animation: text-glow 3s ease-in-out infinite alternate;
381
  }
382
 
383
  .loading-sub {
384
+ font-size: 1rem;
385
+ color: #a0a0a0;
386
+ font-weight: 300;
387
+ letter-spacing: 1px;
388
+ opacity: 0.8;
389
+ animation: fade-text 2s infinite alternate;
390
  }
391
 
392
  /* انیمیشن‌ها */
393
+ @keyframes spin {
394
+ 0% { transform: rotate(0deg); }
395
+ 100% { transform: rotate(360deg); }
396
  }
397
 
398
  @keyframes float-pulse {
399
+ 0%, 100% {
400
+ transform: scale(1) translateY(0);
401
+ opacity: 0.8;
402
+ filter: drop-shadow(0 0 10px var(--color-1));
403
+ }
404
+ 50% {
405
+ transform: scale(1.1) translateY(-5px);
406
+ opacity: 1;
407
+ filter: drop-shadow(0 0 25px var(--color-3));
408
+ }
409
  }
410
 
411
  @keyframes text-glow {
412
+ from { text-shadow: 0 0 10px rgba(124, 77, 255, 0.2); }
413
+ to { text-shadow: 0 0 20px rgba(124, 77, 255, 0.6); }
414
  }
415
 
416
  @keyframes fade-text {
417
+ from { opacity: 0.5; }
418
+ to { opacity: 1; }
419
  }
420
 
421
  /* ========================================= */
422
  /* === استایل‌های بخش ظاهر (نئونی) === */
423
  /* ========================================= */
424
  #section-appearance {
425
+ --track-off: #27272a;
426
+ --neon-primary: #8b5cf6;
427
+ --neon-secondary: #ec4899;
428
  }
429
 
430
  .controls-panel {
431
+ width: 100%;
432
+ background: #18181b;
433
+ border-radius: 24px;
434
+ padding: 25px;
435
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
436
+ border: 1px solid #333;
437
+ margin-top: 10px;
438
  }
439
 
440
  .control-group {
441
+ margin-bottom: 30px;
442
  }
443
  .control-group:last-child { margin-bottom: 0; }
444
 
445
  .header-neon {
446
+ display: flex;
447
+ justify-content: space-between;
448
+ align-items: center;
449
+ margin-bottom: 15px;
450
  }
451
 
452
  .title-neon {
453
+ display: flex;
454
+ align-items: center;
455
+ gap: 10px;
456
+ font-weight: 700;
457
+ font-size: 0.95rem;
458
+ color: #e4e4e7;
459
  }
460
 
461
  .title-neon i {
462
+ color: var(--neon-primary);
463
+ font-size: 1.1rem;
464
+ text-shadow: 0 0 10px rgba(139, 92, 246, 0.5);
465
  }
466
 
467
  .percent-badge {
468
+ font-family: monospace;
469
+ font-size: 1rem;
470
+ font-weight: bold;
471
+ color: #fff;
472
+ background: rgba(139, 92, 246, 0.15);
473
+ padding: 4px 12px;
474
+ border-radius: 8px;
475
+ border: 1px solid rgba(139, 92, 246, 0.3);
476
+ min-width: 60px;
477
+ text-align: center;
478
  }
479
 
480
  .range-container {
481
+ position: relative;
482
+ width: 100%;
483
+ height: 30px;
484
+ display: flex;
485
+ align-items: center;
486
  }
487
 
488
  .range-container input[type=range] {
489
+ -webkit-appearance: none;
490
+ width: 100%;
491
+ background: transparent;
492
+ cursor: pointer;
493
+ z-index: 2;
494
+ margin: 0;
495
  }
496
 
497
  .range-container input[type=range]::-webkit-slider-runnable-track {
498
+ width: 100%;
499
+ height: 8px;
500
+ background: var(--track-off);
501
+ border-radius: 20px;
502
+ border: none;
503
+ background-image: linear-gradient(90deg, var(--neon-primary), var(--neon-secondary));
504
+ background-size: 0% 100%;
505
+ background-repeat: no-repeat;
506
  }
507
 
508
  .range-container input[type=range]::-webkit-slider-thumb {
509
+ -webkit-appearance: none;
510
+ height: 24px;
511
+ width: 24px;
512
+ border-radius: 50%;
513
+ background: #fff;
514
+ margin-top: -8px;
515
+ border: 4px solid #18181b;
516
+ box-shadow: 0 0 0 2px var(--neon-primary), 0 0 15px rgba(139, 92, 246, 0.8);
517
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
518
  }
519
 
520
  .range-container input[type=range]:active::-webkit-slider-thumb {
521
+ transform: scale(1.3);
522
+ background: var(--neon-primary);
523
+ border-color: #fff;
524
+ box-shadow: 0 0 0 0 transparent, 0 0 25px rgba(236, 72, 153, 0.9);
525
  }
526
 
527
  .center-marker {
528
+ position: absolute;
529
+ left: 50%;
530
+ top: 50%;
531
+ transform: translate(-50%, -50%);
532
+ width: 2px;
533
+ height: 12px;
534
+ background: rgba(255,255,255,0.2);
535
+ z-index: 1;
536
+ pointer-events: none;
537
  }
538
 
539
  /* ========================================= */
540
  /* === PRO COLOR PICKER STYLES (iOS/Luxury) === */
541
  /* ========================================= */
542
  :root {
543
+ --glass: rgba(28,28,30,.72);
544
+ --glass2: rgba(44,44,46,.80);
545
+ --stroke: rgba(255,255,255,.10);
546
+ --shadow-lg: 0 22px 60px rgba(0,0,0,.62);
547
+ --shadow-md: 0 12px 30px rgba(0,0,0,.46);
548
+ --shadow-sm: 0 8px 18px rgba(0,0,0,.36);
549
+ --separator: rgba(84,84,88,.38);
550
+ --ok: #34C759;
551
  }
552
 
553
  .toast-notification{ position: fixed; top: calc(16px + env(safe-area-inset-top)); left: 50%; transform: translateX(-50%) translateY(-18px); background: rgba(28,28,30,.78); -webkit-backdrop-filter: blur(18px) saturate(170%); backdrop-filter: blur(18px) saturate(170%); border: 1px solid rgba(255,255,255,.12); box-shadow: var(--shadow-md); color: #fff; padding: 12px 18px; border-radius: 999px; z-index: 20000; font-size: .9rem; font-weight: 900; opacity: 0; visibility: hidden; transition: opacity .25s ease, transform .25s ease, visibility .25s ease; display:flex; align-items:center; gap: 10px; pointer-events:none; }
 
615
 
616
  /* FIX: Photoshop Checkered Pattern for Alpha Container & Preview */
617
  .alpha-checkered {
618
+ width: 100%;
619
+ height: 42px;
620
+ border-radius: 16px;
621
+ background-image: conic-gradient(#dedede 0.25turn, #ffffff 0.25turn 0.5turn, #dedede 0.5turn 0.75turn, #ffffff 0.75turn);
622
+ background-size: 14px 14px;
623
+ background-position: top left;
624
+ overflow: hidden;
625
+ display: flex;
626
+ align-items: center;
627
+ padding: 0 12px;
628
+ border: 1px solid rgba(255,255,255,.10);
629
  }
630
 
631
  /* Footer & Large Preview Fix */
632
  .picker-footer{ margin-top: auto; padding: 12px 16px 0 16px; display:flex; align-items:center; justify-content:space-between; gap: 12px; border-top: 1px solid var(--separator); flex-shrink: 0; background: transparent; }
633
 
634
  /* FIX: Photoshop Checkered Pattern for Large Preview */
635
+ .large-preview {
636
+ width: 64px;
637
+ height: 64px;
638
+ border-radius: 18px;
639
+ border: 1px solid rgba(255,255,255,.12);
640
+ box-shadow: 0 14px 24px rgba(0,0,0,.24);
641
+ flex-shrink: 0;
642
+ /* الگوی شطرنجی دقیق فتوشاپ */
643
+ background-image: conic-gradient(#dedede 0.25turn, #ffffff 0.25turn 0.5turn, #dedede 0.5turn 0.75turn, #ffffff 0.75turn);
644
+ background-size: 16px 16px;
645
+ background-position: center;
646
  }
647
 
648
  .saved-colors-container{ display:flex; gap: 10px; align-items:center; flex-wrap: wrap; flex:1; justify-content:flex-end; max-height: 90px; overflow-y:auto; padding-right: 4px; }
 
680
  /* === استایل‌های جدید برای بخش ظاهر (Appearance) === */
681
  /* ================================================== */
682
  #section-appearance .controls-panel {
683
+ padding: 15px;
684
  }
685
 
686
  /* پنل‌های داخلی برای گروه‌بندی کنترل‌ها */
687
  .control-group-panel {
688
+ background-color: #1f1f23;
689
+ border: 1px solid #3a3a3e;
690
+ border-radius: 18px;
691
+ padding: 20px;
692
+ margin-bottom: 20px;
693
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
694
  }
695
  .control-group-panel:last-child {
696
+ margin-bottom: 0;
697
  }
698
 
699
  /* بخش پیش‌نمایش زنده برای کادر */
700
  .box-preview-area {
701
+ width: 100%;
702
+ min-height: 90px;
703
+ margin-bottom: 25px;
704
+ padding: 15px;
705
+ /* --- تغییر اصلی اینجاست --- */
706
+ background-image: conic-gradient(#444 0.25turn, #333 0.25turn 0.5turn, #444 0.5turn 0.75turn, #333 0.75turn);
707
+ background-size: 20px 20px;
708
+ /* -------------------------- */
709
+ border-radius: 12px;
710
+ display: flex;
711
+ justify-content: center;
712
+ align-items: center;
713
+ border: 1px solid #555;
714
  }
715
 
716
  .box-preview-element {
717
+ color: #fff;
718
+ font-size: 1.2rem;
719
+ font-weight: bold;
720
+ display: inline-block;
721
+ white-space: nowrap;
722
+ /* اینجا line-height وجود نداشت */
723
+ transition: all 0.15s ease-out;
724
  }
725
 
726
  /* ======================================== */
 
728
  /* ======================================== */
729
 
730
  .sheet-spinner-ring {
731
+ width: 60px;
732
+ height: 60px;
733
+ border-radius: 50%;
734
+ border: 4px solid #333;
735
+ border-top-color: var(--primary);
736
+ border-right-color: var(--primary);
737
+ animation: ringSpin 1s cubic-bezier(0.5, 0, 0.5, 1) infinite;
738
  }
739
 
740
  @keyframes ringSpin {
741
+ 0% { transform: rotate(0deg); }
742
+ 100% { transform: rotate(360deg); }
743
  }
744
 
745
  .success-checkmark-anim {
746
+ width: 80px;
747
+ height: 80px;
748
+ border-radius: 50%;
749
+ background: rgba(0, 230, 118, 0.15);
750
+ display: flex;
751
+ align-items: center;
752
+ justify-content: center;
753
+ animation: successPop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
754
  }
755
 
756
  .success-checkmark-anim i {
757
+ font-size: 3rem;
758
+ color: #00e676;
759
+ animation: checkScale 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.1s both;
760
  }
761
 
762
  @keyframes successPop {
763
+ from { transform: scale(0); opacity: 0; }
764
+ to { transform: scale(1); opacity: 1; }
765
  }
766
 
767
  @keyframes checkScale {
768
+ from { transform: scale(0); }
769
+ to { transform: scale(1); }
770
  }
771
 
772
  /* ======================================== */
 
774
  /* ======================================== */
775
 
776
  .word-count-grid {
777
+ display: flex;
778
+ overflow-x: auto;
779
+ padding: 10px 0;
780
+ gap: 10px;
781
+ width: 100%;
782
+ scrollbar-width: none;
783
+ -ms-overflow-style: none;
784
+ justify-content: space-between;
785
  }
786
  .word-count-grid::-webkit-scrollbar {
787
+ display: none;
788
  }
789
 
790
  .wc-btn {
791
+ flex: 0 0 auto;
792
+ width: 50px;
793
+ height: 50px;
794
+ border-radius: 14px;
795
+ background: #333;
796
+ color: #fff;
797
+ border: 1px solid #444;
798
+ font-size: 1.2rem;
799
+ font-weight: bold;
800
+ cursor: pointer;
801
+ transition: 0.2s;
802
+ display: flex;
803
+ align-items: center;
804
+ justify-content: center;
805
  }
806
  .wc-btn:active {
807
+ background: var(--primary);
808
+ border-color: var(--primary);
809
+ transform: scale(0.9);
810
  }
811
 
812
  /* ======================================== */
 
814
  /* ======================================== */
815
 
816
  .trimmer-header {
817
+ display: flex;
818
+ flex-direction: column;
819
+ align-items: center;
820
+ justify-content: center;
821
+ gap: 10px;
822
+ margin-bottom: 25px;
823
+ width: 100%;
824
  }
825
 
826
  .trimmer-play-btn {
827
+ width: 50px;
828
+ height: 50px;
829
+ border-radius: 50%;
830
+ border: 2px solid var(--accent-orange);
831
+ background: transparent;
832
+ color: var(--accent-orange);
833
+ font-size: 1.4rem;
834
+ display: flex;
835
+ align-items: center;
836
+ justify-content: center;
837
+ cursor: pointer;
838
+ transition: transform 0.2s;
839
  }
840
  .trimmer-play-btn:active {
841
+ transform: scale(0.9);
842
  }
843
 
844
  .trimmer-time-display {
845
+ font-family: monospace;
846
+ font-size: 1.2rem;
847
+ color: #fff;
848
+ font-weight: bold;
849
+ direction: ltr;
850
  }
851
 
852
  .trimmer-body {
853
+ display: flex;
854
+ align-items: center;
855
+ justify-content: space-between;
856
+ width: 100%;
857
+ gap: 10px;
858
+ margin-bottom: 20px;
859
  }
860
 
861
  .word-preview-side {
862
+ width: 60px;
863
+ height: 60px;
864
+ background: #222;
865
+ border-radius: 12px;
866
+ display: flex;
867
+ align-items: center;
868
+ justify-content: center;
869
+ color: #777;
870
+ font-size: 0.9rem;
871
+ font-weight: bold;
872
+ text-align: center;
873
+ flex-shrink: 0;
874
  }
875
 
876
  .trimmer-container {
877
+ flex: 1;
878
+ position: relative;
879
+ height: 60px;
880
+ background: #000;
881
+ border-radius: 10px;
882
+ overflow: hidden;
883
+ /* اگر بخواهیم هندل‌ها بیرون نزنند */
884
  }
885
 
886
  /* نوار کلی (ترک) */
887
  .timeline-strip {
888
+ position: absolute;
889
+ top: 50%;
890
+ left: 10px; /* مارجین برای هندل‌ها */
891
+ right: 10px;
892
+ height: 40px;
893
+ transform: translateY(-50%);
894
+ background: linear-gradient(90deg, #333 0%, #444 50%, #333 100%);
895
+ background-size: 20px 100%;
896
+ border-radius: 4px;
897
  }
898
 
899
  /* بخش فعال (بین دو هندل) */
900
  .trim-track-active {
901
+ position: absolute;
902
+ top: 0;
903
+ bottom: 0;
904
+ background: rgba(255, 255, 255, 0.15);
905
+ border-top: 2px solid #FDD835;
906
+ border-bottom: 2px solid #FDD835;
907
+ left: 0; /* این مقادیر با JS تغییر میکنن */
908
+ right: 0; /* این مقادیر با JS تغییر میکنن */
909
  }
910
 
911
  /* هندل‌های زرد رنگ */
912
  .trim-handle {
913
+ position: absolute;
914
+ top: 0;
915
+ bottom: 0;
916
+ width: 20px;
917
+ background: #FDD835;
918
+ cursor: col-resize;
919
+ display: flex;
920
+ align-items: center;
921
+ justify-content: center;
922
+ color: #000;
923
+ font-size: 0.8rem;
924
+ z-index: 10;
925
+ border-radius: 4px;
926
  }
927
 
928
  .trim-handle.left {
929
+ left: 0; /* JS کنترل میکنه */
930
+ border-top-left-radius: 8px;
931
+ border-bottom-left-radius: 8px;
932
  }
933
 
934
  .trim-handle.right {
935
+ right: 0; /* JS کنترل میکنه (right: 0 یعنی چسبیده به ته) */
936
+ /* اما برای پوزیشن ابسولوت نسبت به پرنت، ما از style.left استفاده میکنیم */
937
+ border-top-right-radius: 8px;
938
+ border-bottom-right-radius: 8px;
939
  }
940
 
941
  .trimmer-current-word {
942
+ text-align: center;
943
+ background: #333;
944
+ padding: 10px 20px;
945
+ border-radius: 16px;
946
+ color: #fff;
947
+ font-size: 1.1rem;
948
+ font-weight: bold;
949
+ align-self: center;
950
+ margin-bottom: 10px;
951
+ min-width: 100px;
952
  }