akhaliq HF Staff commited on
Commit
6d2fc97
·
1 Parent(s): ea25969

style: redesign frontend to match a professional studio console aesthetic

Browse files
Files changed (1) hide show
  1. index.html +379 -360
index.html CHANGED
@@ -16,21 +16,26 @@
16
 
17
  <style>
18
  :root {
19
- --bg-color: #05060a;
20
- --panel-bg: rgba(11, 14, 23, 0.75);
21
- --sidebar-bg: #0b0e17;
22
- --panel-border: rgba(60, 208, 162, 0.08);
 
23
  --text-primary: #f8fafc;
24
- --text-secondary: #94a3b8;
25
- --accent-mint: #3cd0a2;
26
- --accent-mint-hover: #5fe2b9;
27
- --accent-mint-glow: rgba(60, 208, 162, 0.2);
28
- --accent-dark-slate: #1e293b;
29
- --accent-green: #10b981;
30
- --radius-lg: 18px;
31
- --radius-md: 12px;
32
- --radius-sm: 8px;
33
- --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
 
 
 
 
34
  }
35
 
36
  * {
@@ -41,44 +46,45 @@
41
 
42
  body {
43
  background-color: var(--bg-color);
 
 
 
 
 
44
  color: var(--text-primary);
45
- font-family: 'Inter', sans-serif;
46
  min-height: 100vh;
47
  line-height: 1.5;
48
- overflow: hidden; /* Sidebar controls scrolling */
49
  position: relative;
50
  }
51
 
52
- /* Ambient glowing circles using Resemble AI branding colors */
53
  body::before {
54
  content: '';
55
  position: absolute;
56
- top: -10%;
57
- left: 10%;
58
- width: 45%;
59
- height: 45%;
60
- background: radial-gradient(circle, var(--accent-mint-glow) 0%, transparent 60%);
61
- z-index: -1;
62
- filter: blur(80px);
63
  pointer-events: none;
64
- opacity: 0.7;
65
  }
66
 
67
  body::after {
68
  content: '';
69
  position: absolute;
70
- bottom: -5%;
71
- right: 5%;
72
- width: 40%;
73
- height: 40%;
74
- background: radial-gradient(circle, rgba(139, 92, 246, 0.12) 0%, transparent 60%);
75
- z-index: -1;
76
- filter: blur(80px);
77
  pointer-events: none;
78
- opacity: 0.5;
79
  }
80
 
81
- /* Base Page Layout */
82
  .app-layout {
83
  display: flex;
84
  width: 100vw;
@@ -87,9 +93,8 @@
87
  overflow: hidden;
88
  }
89
 
90
- /* ── Collapsible Sidebar ── */
91
  .sidebar {
92
- width: 360px;
93
  height: 100%;
94
  background-color: var(--sidebar-bg);
95
  border-right: 1px solid var(--panel-border);
@@ -97,30 +102,32 @@
97
  flex-direction: column;
98
  position: relative;
99
  z-index: 100;
100
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
101
- box-shadow: 10px 0 30px rgba(0, 0, 0, 0.25);
102
  flex-shrink: 0;
103
  }
104
 
105
  .sidebar.collapsed {
106
- margin-left: -360px;
107
  transform: translateX(-100%);
108
  }
109
 
110
  .sidebar-header {
111
- padding: 20px 24px;
112
  display: flex;
113
  align-items: center;
114
  justify-content: space-between;
115
- border-bottom: 1px solid rgba(255, 255, 255, 0.04);
 
116
  }
117
 
118
  .sidebar-title {
119
- font-family: 'Outfit', sans-serif;
120
- font-size: 1.1rem;
121
  font-weight: 700;
122
- color: #ffffff;
123
- letter-spacing: 0.5px;
 
124
  display: flex;
125
  align-items: center;
126
  gap: 8px;
@@ -130,32 +137,32 @@
130
  background: none;
131
  border: none;
132
  color: var(--text-secondary);
133
- font-size: 1.1rem;
134
  cursor: pointer;
135
  transition: var(--transition);
136
  display: flex;
137
  align-items: center;
138
  justify-content: center;
139
  padding: 4px;
 
140
  }
141
 
142
  .sidebar-close-btn:hover {
143
- color: #ffffff;
144
- transform: scale(1.1);
145
  }
146
 
147
  .sidebar-scrollable {
148
  flex: 1;
149
  overflow-y: auto;
150
- padding: 24px;
151
  display: flex;
152
  flex-direction: column;
153
- gap: 24px;
154
  }
155
 
156
- /* Scrollbar styles for sidebar */
157
  .sidebar-scrollable::-webkit-scrollbar {
158
- width: 5px;
159
  }
160
 
161
  .sidebar-scrollable::-webkit-scrollbar-track {
@@ -163,15 +170,14 @@
163
  }
164
 
165
  .sidebar-scrollable::-webkit-scrollbar-thumb {
166
- background: rgba(255, 255, 255, 0.05);
167
- border-radius: 3px;
168
  }
169
 
170
  .sidebar-scrollable::-webkit-scrollbar-thumb:hover {
171
- background: rgba(255, 255, 255, 0.1);
172
  }
173
 
174
- /* ── Main Workspace Area ── */
175
  .content-area {
176
  flex: 1;
177
  height: 100%;
@@ -182,88 +188,83 @@
182
  transition: var(--transition);
183
  }
184
 
185
- /* Main Scrollable wrapper */
186
  .content-container {
187
  width: 100%;
188
- max-width: 840px;
189
  margin: 0 auto;
190
- padding: 24px 20px 60px 20px;
191
  display: flex;
192
  flex-direction: column;
193
- gap: 24px;
194
  }
195
 
196
  header {
197
  display: flex;
198
  flex-direction: column;
199
- align-items: center;
200
- text-align: center;
201
- padding: 20px 0 10px 0;
202
- gap: 12px;
203
  position: relative;
 
204
  }
205
 
206
  .logo-area {
207
  display: flex;
208
  align-items: center;
209
  gap: 12px;
 
210
  }
211
 
212
  .logo-emoji {
213
- font-size: 2.2rem;
214
- animation: float 3s ease-in-out infinite;
215
- }
216
-
217
- @keyframes float {
218
- 0%, 100% { transform: translateY(0); }
219
- 50% { transform: translateY(-5px); }
220
  }
221
 
222
  h1 {
223
- font-family: 'Outfit', sans-serif;
224
- font-size: 2.4rem;
225
  font-weight: 800;
226
- background: linear-gradient(135deg, #ffffff 40%, var(--accent-mint) 80%, #76ecd4 100%);
227
- -webkit-background-clip: text;
228
- -webkit-text-fill-color: transparent;
229
- letter-spacing: -0.5px;
230
  }
231
 
232
  .brand-badge {
233
- font-size: 0.75rem;
 
234
  font-weight: 600;
235
- background: rgba(60, 208, 162, 0.1);
236
- color: var(--accent-mint);
237
- border: 1px solid rgba(60, 208, 162, 0.2);
238
- padding: 3px 8px;
239
- border-radius: 30px;
240
  text-transform: uppercase;
241
  letter-spacing: 0.5px;
242
  }
243
 
244
  .subtitle {
245
- font-size: 0.95rem;
246
  color: var(--text-secondary);
247
  font-weight: 400;
248
  }
249
 
250
  .ltx-banner {
251
- background: rgba(22, 28, 45, 0.3);
252
  border: 1px solid var(--panel-border);
253
- border-left: 3px solid var(--accent-mint);
254
  border-radius: var(--radius-md);
255
- padding: 12px 18px;
256
  color: #cbd5e1;
257
- font-size: 0.82rem;
258
  line-height: 1.5;
259
  text-align: left;
260
- backdrop-filter: blur(10px);
261
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
262
  width: 100%;
263
  }
264
 
265
  .ltx-banner a {
266
- color: var(--accent-mint);
267
  font-weight: 600;
268
  text-decoration: none;
269
  transition: var(--transition);
@@ -274,52 +275,50 @@
274
  text-decoration: underline;
275
  }
276
 
277
- /* Sliding Toggle Controls Button */
278
  .btn-toggle-sidebar {
279
- background: rgba(255, 255, 255, 0.03);
280
  border: 1px solid var(--panel-border);
281
  color: #ffffff;
282
- font-size: 0.85rem;
 
283
  font-weight: 600;
284
- padding: 10px 16px;
285
- border-radius: 30px;
286
  cursor: pointer;
287
  display: flex;
288
  align-items: center;
289
  gap: 8px;
290
  transition: var(--transition);
291
  outline: none;
292
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
 
293
  }
294
 
295
  .btn-toggle-sidebar:hover {
296
- background: rgba(60, 208, 162, 0.05);
297
- border-color: var(--accent-mint);
298
- transform: translateY(-1px);
299
  }
300
 
301
- /* ── Modern Script Panels (Main Area) ── */
302
  .main-panel {
303
  background: var(--panel-bg);
304
  border: 1px solid var(--panel-border);
305
  border-radius: var(--radius-lg);
306
- padding: 24px;
307
- backdrop-filter: blur(20px);
308
- box-shadow: 0 16px 40px rgba(0, 0, 0, 0.25);
309
  display: flex;
310
  flex-direction: column;
311
- gap: 20px;
312
- transition: var(--transition);
313
  }
314
 
315
  .form-group {
316
  display: flex;
317
  flex-direction: column;
318
- gap: 8px;
319
  }
320
 
321
  .form-label {
322
- font-size: 0.78rem;
 
323
  font-weight: 700;
324
  text-transform: uppercase;
325
  letter-spacing: 0.8px;
@@ -330,71 +329,69 @@
330
  }
331
 
332
  .label-badge {
333
- font-size: 0.75rem;
334
- color: var(--accent-mint);
335
- text-transform: none;
336
- font-weight: 400;
337
- letter-spacing: 0;
 
338
  }
339
 
340
  .textarea-custom {
341
  width: 100%;
342
- background: rgba(5, 7, 12, 0.8);
343
  border: 1px solid var(--panel-border);
344
  border-radius: var(--radius-md);
345
- padding: 16px;
346
  color: var(--text-primary);
347
  font-family: 'Inter', sans-serif;
348
- font-size: 1rem;
349
- line-height: 1.6;
350
  resize: vertical;
351
- min-height: 140px;
352
  outline: none;
353
  transition: var(--transition);
354
  }
355
 
356
  .textarea-custom:focus {
357
- border-color: var(--accent-mint);
358
- box-shadow: 0 0 15px var(--accent-mint-glow);
359
- background: rgba(5, 7, 12, 0.95);
360
  }
361
 
362
- /* Reference Uploader Inside Sidebar */
363
  .upload-zone {
364
- border: 2px dashed rgba(60, 208, 162, 0.2);
365
  border-radius: var(--radius-md);
366
- padding: 18px;
367
  text-align: center;
368
  cursor: pointer;
369
- background: rgba(60, 208, 162, 0.01);
370
  display: flex;
371
  flex-direction: column;
372
  align-items: center;
373
  gap: 6px;
374
  transition: var(--transition);
375
- min-height: 90px;
376
  justify-content: center;
377
  }
378
 
379
  .upload-zone:hover, .upload-zone.dragover {
380
- border-color: var(--accent-mint);
381
- background: rgba(60, 208, 162, 0.04);
382
  }
383
 
384
  .upload-icon {
385
- font-size: 1.6rem;
386
- color: var(--accent-mint);
387
- transition: var(--transition);
388
  }
389
 
390
  .upload-text {
391
- font-size: 0.8rem;
392
  color: var(--text-secondary);
393
  }
394
 
395
  .upload-text strong {
396
  color: #ffffff;
397
- font-weight: 500;
398
  }
399
 
400
  .hidden-input {
@@ -405,9 +402,9 @@
405
  display: flex;
406
  align-items: center;
407
  justify-content: space-between;
408
- background: rgba(60, 208, 162, 0.06);
409
- border: 1px solid rgba(60, 208, 162, 0.2);
410
- padding: 10px 14px;
411
  border-radius: var(--radius-md);
412
  width: 100%;
413
  }
@@ -415,8 +412,9 @@
415
  .file-info {
416
  display: flex;
417
  align-items: center;
418
- gap: 10px;
419
- font-size: 0.82rem;
 
420
  font-weight: 500;
421
  overflow: hidden;
422
  white-space: nowrap;
@@ -427,158 +425,163 @@
427
  background: none;
428
  border: none;
429
  color: var(--text-secondary);
430
- font-size: 0.95rem;
431
  cursor: pointer;
432
  transition: var(--transition);
433
  padding: 2px;
434
  display: flex;
435
  align-items: center;
436
  justify-content: center;
 
437
  }
438
 
439
  .btn-clear:hover {
440
  color: #ffffff;
441
- transform: scale(1.1);
442
  }
443
 
444
- /* Modernized Sidebar Dashboard Items */
445
  .settings-block {
446
  display: flex;
447
  flex-direction: column;
448
- gap: 16px;
449
- background: rgba(255, 255, 255, 0.01);
450
- border: 1px solid rgba(255, 255, 255, 0.03);
451
- padding: 16px;
452
  border-radius: var(--radius-md);
453
  }
454
 
455
  .settings-block-title {
456
- font-family: 'Outfit', sans-serif;
457
- font-size: 0.85rem;
458
  font-weight: 700;
459
- letter-spacing: 0.5px;
460
  text-transform: uppercase;
461
  color: #ffffff;
462
- border-bottom: 1px solid rgba(255, 255, 255, 0.03);
463
- padding-bottom: 8px;
464
- margin-bottom: 4px;
465
  }
466
 
467
  .slider-group {
468
  display: flex;
469
  flex-direction: column;
470
- gap: 6px;
471
  }
472
 
473
  .slider-meta {
474
  display: flex;
475
  justify-content: space-between;
476
- font-size: 0.8rem;
477
  color: var(--text-secondary);
478
  font-weight: 500;
479
  }
480
 
481
  .slider-value {
482
- color: var(--accent-mint);
483
  font-weight: 700;
484
- font-family: monospace;
 
 
 
 
485
  }
486
 
487
  input[type="range"] {
488
  -webkit-appearance: none;
489
  width: 100%;
490
- height: 4px;
491
- background: rgba(255, 255, 255, 0.06);
492
- border-radius: 2px;
 
493
  outline: none;
494
  cursor: pointer;
495
  }
496
 
497
  input[type="range"]::-webkit-slider-thumb {
498
  -webkit-appearance: none;
499
- width: 14px;
500
- height: 14px;
501
- border-radius: 50%;
502
- background: var(--accent-mint);
503
- box-shadow: 0 0 8px var(--accent-mint-glow);
 
504
  transition: var(--transition);
505
  }
506
 
507
  input[type="range"]::-webkit-slider-thumb:hover {
508
- transform: scale(1.2);
509
  background: #ffffff;
 
510
  }
511
 
512
- /* Seed Elements */
513
  .seed-row {
514
  display: flex;
515
- gap: 8px;
516
  align-items: center;
517
  }
518
 
519
  .input-seed {
520
  flex: 1;
521
- background: rgba(5, 7, 12, 0.8);
522
- border: 1px solid rgba(255, 255, 255, 0.04);
523
  border-radius: var(--radius-sm);
524
- padding: 8px 12px;
525
  color: var(--text-primary);
526
- font-family: monospace;
527
  outline: none;
528
- font-size: 0.85rem;
529
  transition: var(--transition);
530
- height: 38px;
531
  }
532
 
533
  .input-seed:focus {
534
- border-color: var(--accent-mint);
535
  }
536
 
537
  .btn-seed-random {
538
- background: rgba(255, 255, 255, 0.03);
539
- border: 1px solid rgba(255, 255, 255, 0.04);
540
  border-radius: var(--radius-sm);
541
  color: var(--text-primary);
542
- height: 38px;
543
- width: 38px;
544
  display: flex;
545
  align-items: center;
546
  justify-content: center;
547
  cursor: pointer;
548
  transition: var(--transition);
549
- font-size: 0.9rem;
550
  }
551
 
552
  .btn-seed-random:hover {
553
- background: rgba(60, 208, 162, 0.05);
554
- border-color: var(--accent-mint);
555
  }
556
 
557
- /* Glowing Resemble Green Button */
558
  .btn-generate {
559
- background: linear-gradient(135deg, var(--accent-mint) 0%, #2ac596 100%);
560
  border: none;
561
  border-radius: var(--radius-md);
562
  color: #07090e;
563
- font-family: 'Outfit', sans-serif;
564
- font-size: 1.05rem;
565
- font-weight: 800;
566
- padding: 14px;
567
  cursor: pointer;
568
  transition: var(--transition);
569
  display: flex;
570
  align-items: center;
571
  justify-content: center;
572
- gap: 10px;
573
- box-shadow: 0 6px 20px var(--accent-mint-glow);
574
- min-height: 48px;
575
- letter-spacing: 0.3px;
 
576
  }
577
 
578
  .btn-generate:hover:not(:disabled) {
579
- transform: translateY(-1.5px);
580
- box-shadow: 0 10px 25px rgba(60, 208, 162, 0.4);
581
- background: linear-gradient(135deg, var(--accent-mint-hover) 0%, var(--accent-mint) 100%);
582
  }
583
 
584
  .btn-generate:active:not(:disabled) {
@@ -586,23 +589,23 @@
586
  }
587
 
588
  .btn-generate:disabled {
589
- background: #161a24;
590
- color: #3b4255;
 
591
  cursor: not-allowed;
592
  box-shadow: none;
593
  }
594
 
595
- /* ── Output Lounge (Visual Player Deck) ── */
596
  .output-wrapper {
597
- background: rgba(5, 7, 12, 0.5);
598
  border: 1px solid var(--panel-border);
599
  border-radius: var(--radius-md);
600
- padding: 20px;
601
  display: flex;
602
  flex-direction: column;
603
  align-items: center;
604
  justify-content: center;
605
- min-height: 140px;
606
  position: relative;
607
  }
608
 
@@ -612,95 +615,98 @@
612
  display: flex;
613
  flex-direction: column;
614
  align-items: center;
615
- gap: 10px;
616
  }
617
 
618
  .empty-icon {
619
- font-size: 2.2rem;
620
- opacity: 0.4;
621
- color: var(--accent-mint);
622
  }
623
 
624
  .empty-text {
625
- font-size: 0.85rem;
 
 
 
626
  }
627
 
628
- /* Glowing Custom Player Layout */
629
  .audio-player {
630
  width: 100%;
631
  display: flex;
632
  flex-direction: column;
633
- gap: 14px;
634
  }
635
 
636
  .visualizer-box {
637
  width: 100%;
638
- height: 44px;
639
- background: linear-gradient(90deg, rgba(60, 208, 162, 0.05) 0%, rgba(139, 92, 246, 0.03) 100%);
640
  border-radius: var(--radius-sm);
641
  display: flex;
642
  align-items: center;
643
  justify-content: center;
644
- border: 1px solid rgba(60, 208, 162, 0.04);
645
  overflow: hidden;
646
  }
647
 
648
  .visualizer-wave {
649
  display: flex;
650
  align-items: center;
651
- gap: 3px;
652
  height: 100%;
653
  }
654
 
655
  .wave-bar {
656
  width: 3px;
657
- height: 5px;
658
- background: var(--accent-mint);
659
  border-radius: 1px;
660
  transition: var(--transition);
661
  }
662
 
663
  .audio-player.playing .wave-bar {
664
- animation: playWave 1.2s infinite ease-in-out alternate;
665
  }
666
 
667
  @keyframes playWave {
668
- 0% { height: 5px; }
669
- 100% { height: 28px; }
670
  }
671
 
672
- .wave-bar:nth-child(2n) { background: #5fe2b9; animation-delay: 0.15s; }
673
- .wave-bar:nth-child(3n) { animation-delay: 0.3s; }
674
- .wave-bar:nth-child(4n) { animation-delay: 0.45s; }
675
- .wave-bar:nth-child(5n) { background: var(--accent-mint); animation-delay: 0.6s; }
676
 
677
  .player-row {
678
  display: flex;
679
  align-items: center;
680
- gap: 12px;
681
  width: 100%;
682
  }
683
 
684
  .btn-play {
685
- background: #ffffff;
686
  border: none;
687
- color: var(--bg-color);
688
- width: 40px;
689
- height: 40px;
690
- border-radius: 50%;
691
  display: flex;
692
  align-items: center;
693
  justify-content: center;
694
- font-size: 1rem;
695
  cursor: pointer;
696
  transition: var(--transition);
697
- box-shadow: 0 4px 12px rgba(255, 255, 255, 0.15);
698
  flex-shrink: 0;
699
  }
700
 
701
  .btn-play:hover {
702
- transform: scale(1.05);
703
- box-shadow: 0 6px 18px rgba(255, 255, 255, 0.3);
 
704
  }
705
 
706
  .progress-box {
@@ -713,14 +719,14 @@
713
  .time-lbl {
714
  font-size: 0.72rem;
715
  color: var(--text-secondary);
716
- font-family: monospace;
717
  min-width: 32px;
718
  }
719
 
720
- /* Secondary progress slider bar track styling */
721
  .progress-box input[type="range"]::-webkit-slider-thumb {
722
- background: #ffffff;
723
- box-shadow: 0 0 6px rgba(255, 255, 255, 0.5);
 
724
  }
725
 
726
  .deck-footer {
@@ -728,9 +734,9 @@
728
  align-items: center;
729
  justify-content: space-between;
730
  width: 100%;
731
- border-top: 1px solid rgba(255, 255, 255, 0.04);
732
- padding-top: 12px;
733
- gap: 12px;
734
  flex-wrap: wrap;
735
  }
736
 
@@ -738,12 +744,12 @@
738
  display: flex;
739
  align-items: center;
740
  gap: 6px;
741
- max-width: 90px;
742
  flex-shrink: 0;
743
  }
744
 
745
  .vol-icon {
746
- font-size: 0.8rem;
747
  color: var(--text-secondary);
748
  }
749
 
@@ -758,11 +764,12 @@
758
  }
759
 
760
  .btn-speed {
761
- background: rgba(255, 255, 255, 0.02);
762
- border: 1px solid rgba(255, 255, 255, 0.04);
763
- border-radius: 6px;
764
  color: var(--text-secondary);
765
- font-size: 0.68rem;
 
766
  font-weight: 600;
767
  padding: 3px 6px;
768
  cursor: pointer;
@@ -770,38 +777,41 @@
770
  }
771
 
772
  .btn-speed.active, .btn-speed:hover {
773
- background: rgba(60, 208, 162, 0.06);
774
- color: var(--accent-mint);
775
- border-color: rgba(60, 208, 162, 0.2);
776
  }
777
 
778
  .btn-download-wav {
779
- background: rgba(255, 255, 255, 0.04);
780
  border: 1px solid var(--panel-border);
781
  border-radius: var(--radius-sm);
782
  color: #ffffff;
783
- font-size: 0.78rem;
 
784
  font-weight: 600;
785
- padding: 6px 12px;
786
  text-decoration: none;
787
  display: flex;
788
  align-items: center;
789
- gap: 6px;
790
  transition: var(--transition);
 
 
791
  }
792
 
793
  .btn-download-wav:hover {
794
- background: var(--accent-mint);
795
  color: #07090e;
796
- border-color: var(--accent-mint);
797
- transform: translateY(-1px);
798
  }
799
 
800
  @media (max-width: 480px) {
801
  .deck-footer {
802
  flex-direction: column;
803
  align-items: stretch;
804
- gap: 12px;
805
  }
806
  .vol-slider {
807
  max-width: 100%;
@@ -814,42 +824,44 @@
814
  }
815
  }
816
 
817
- /* Synchronizer Status Alert */
818
  .status-alert {
819
  display: flex;
820
  align-items: center;
821
- gap: 10px;
822
- font-size: 0.82rem;
823
- font-weight: 500;
824
- padding: 10px 14px;
 
 
825
  border-radius: var(--radius-md);
826
  border: 1px solid transparent;
827
  display: none;
828
- margin-bottom: 12px;
829
  width: 100%;
 
830
  }
831
 
832
  .status-alert.success {
833
- background: rgba(16, 185, 129, 0.04);
834
- border-color: rgba(16, 185, 129, 0.15);
835
  color: var(--accent-green);
836
  }
837
 
838
  .status-alert.info {
839
- background: rgba(60, 208, 162, 0.04);
840
- border-color: rgba(60, 208, 162, 0.15);
841
- color: #8bead0;
842
  }
843
 
844
  .status-alert.error {
845
- background: rgba(239, 68, 68, 0.04);
846
- border-color: rgba(239, 68, 68, 0.15);
847
  color: #f87171;
848
  }
849
 
850
  .alert-spinner {
851
- width: 14px;
852
- height: 14px;
853
  border: 2px solid rgba(255, 255, 255, 0.1);
854
  border-top: 2px solid currentColor;
855
  border-radius: 50%;
@@ -861,46 +873,45 @@
861
  100% { transform: rotate(360deg); }
862
  }
863
 
864
- /* Demo deck scrollable inside sidebar */
865
  .demo-capsules {
866
  display: flex;
867
  flex-direction: column;
868
- gap: 8px;
869
  }
870
 
871
  .demo-pill {
872
- background: rgba(255, 255, 255, 0.01);
873
- border: 1px solid rgba(255, 255, 255, 0.04);
874
  border-radius: var(--radius-md);
875
- padding: 10px 14px;
876
  cursor: pointer;
877
  transition: var(--transition);
878
  display: flex;
879
  justify-content: space-between;
880
  align-items: center;
881
- gap: 12px;
882
  text-align: left;
883
  }
884
 
885
  .demo-pill:hover {
886
- background: rgba(60, 208, 162, 0.02);
887
- border-color: rgba(60, 208, 162, 0.15);
888
- transform: translateX(2px);
889
  }
890
 
891
  .demo-pill.active {
892
- border-color: var(--accent-mint);
893
- background: rgba(60, 208, 162, 0.03);
894
  }
895
 
896
  .demo-pill-title {
897
- font-size: 0.82rem;
898
  font-weight: 600;
899
  color: #ffffff;
900
  white-space: nowrap;
901
  overflow: hidden;
902
  text-overflow: ellipsis;
903
- max-width: 170px;
904
  }
905
 
906
  .pill-labels {
@@ -910,20 +921,21 @@
910
  }
911
 
912
  .pill-badge {
913
- font-size: 0.65rem;
 
914
  font-weight: 700;
915
- padding: 1px 5px;
916
- border-radius: 4px;
917
  text-transform: uppercase;
918
  }
919
 
920
- .pill-badge-male { background: rgba(59, 130, 246, 0.08); color: #60a5fa; }
921
- .pill-badge-female { background: rgba(236, 72, 153, 0.08); color: #f472b6; }
922
- .pill-badge-long { background: rgba(139, 92, 246, 0.08); color: #c084fc; }
923
 
924
- /* Guide container inside sidebar */
925
  .guide-header {
926
- font-size: 0.82rem;
 
927
  font-weight: 700;
928
  color: #ffffff;
929
  cursor: pointer;
@@ -932,56 +944,56 @@
932
  align-items: center;
933
  user-select: none;
934
  text-transform: uppercase;
935
- letter-spacing: 0.5px;
936
- border-bottom: 1px solid rgba(255, 255, 255, 0.03);
937
- padding-bottom: 8px;
938
- margin-bottom: 4px;
939
  }
940
 
941
  .guide-body {
942
  max-height: 0;
943
  overflow: hidden;
944
- transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
945
- font-size: 0.78rem;
946
  color: var(--text-secondary);
947
  display: flex;
948
  flex-direction: column;
949
- gap: 12px;
950
- line-height: 1.55;
951
  }
952
 
953
  .guide-body.open {
954
  max-height: 380px;
955
- margin-top: 12px;
956
  }
957
 
958
  .guide-block-title {
959
  color: #ffffff;
960
- font-weight: 600;
 
961
  margin-bottom: 2px;
962
- font-size: 0.78rem;
 
963
  }
964
 
965
  .guide-list {
966
- padding-left: 14px;
967
  display: flex;
968
  flex-direction: column;
969
- gap: 3px;
970
  }
971
 
972
- /* ── Sidebar backdrop overlay (mobile and smaller desktops) ── */
973
  .sidebar-overlay {
974
  position: fixed;
975
  top: 0;
976
  left: 0;
977
  width: 100vw;
978
  height: 100vh;
979
- background: rgba(0, 0, 0, 0.5);
980
- backdrop-filter: blur(4px);
981
  z-index: 90;
982
  opacity: 0;
983
  pointer-events: none;
984
- transition: opacity 0.3s ease;
985
  }
986
 
987
  .sidebar-overlay.active {
@@ -991,14 +1003,16 @@
991
 
992
  footer {
993
  margin-top: auto;
994
- text-align: center;
995
- padding: 30px 20px;
996
- font-size: 0.75rem;
997
- color: var(--text-secondary);
998
- border-top: 1px solid rgba(255, 255, 255, 0.03);
 
 
 
999
  }
1000
 
1001
- /* ── Mobile and Tablet Adaptations ── */
1002
  @media (max-width: 992px) {
1003
  .sidebar {
1004
  position: fixed;
@@ -1012,29 +1026,29 @@
1012
  transform: translateX(-100%);
1013
  }
1014
  h1 {
1015
- font-size: 2rem;
1016
  }
1017
  .logo-emoji {
1018
- font-size: 1.8rem;
1019
  }
1020
  }
1021
 
1022
  @media (min-width: 993px) {
1023
  .sidebar-close-btn {
1024
- display: none; /* Only show toggle trigger on desktop */
1025
  }
1026
  }
1027
 
1028
- /* ── Premium Audio Trimmer Widget ── */
1029
  .audio-trimmer-container {
1030
  display: flex;
1031
  flex-direction: column;
1032
- gap: 12px;
1033
- background: rgba(255, 255, 255, 0.02);
1034
- border: 1px solid rgba(60, 208, 162, 0.15);
 
1035
  border-radius: var(--radius-md);
1036
- padding: 14px;
1037
- margin-top: 10px;
1038
  transition: var(--transition);
1039
  }
1040
 
@@ -1042,8 +1056,8 @@
1042
  display: flex;
1043
  justify-content: space-between;
1044
  align-items: center;
1045
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
1046
- padding-bottom: 8px;
1047
  }
1048
 
1049
  .trimmer-file-info {
@@ -1054,17 +1068,18 @@
1054
  }
1055
 
1056
  .trimmer-file-icon {
1057
- font-size: 1.1rem;
1058
  }
1059
 
1060
  .trimmer-filename {
1061
- font-size: 0.8rem;
 
1062
  color: var(--text-primary);
1063
  font-weight: 500;
1064
  white-space: nowrap;
1065
  overflow: hidden;
1066
  text-overflow: ellipsis;
1067
- max-width: 170px;
1068
  }
1069
 
1070
  .btn-clear-trimmer {
@@ -1072,9 +1087,9 @@
1072
  border: none;
1073
  color: var(--text-secondary);
1074
  cursor: pointer;
1075
- font-size: 0.9rem;
1076
  padding: 4px;
1077
- border-radius: 50%;
1078
  display: flex;
1079
  align-items: center;
1080
  justify-content: center;
@@ -1082,16 +1097,16 @@
1082
  }
1083
 
1084
  .btn-clear-trimmer:hover {
1085
- color: #ef4444;
1086
- background: rgba(239, 68, 68, 0.1);
1087
  }
1088
 
1089
  .trimmer-waveform-box {
1090
  position: relative;
1091
  width: 100%;
1092
- height: 64px;
1093
- background: rgba(0, 0, 0, 0.3);
1094
- border: 1px solid rgba(255, 255, 255, 0.05);
1095
  border-radius: var(--radius-sm);
1096
  overflow: hidden;
1097
  }
@@ -1106,8 +1121,10 @@
1106
  display: flex;
1107
  justify-content: space-between;
1108
  align-items: center;
1109
- font-size: 0.75rem;
1110
- margin-bottom: -4px;
 
 
1111
  }
1112
 
1113
  .duration-title {
@@ -1115,81 +1132,83 @@
1115
  }
1116
 
1117
  .duration-val {
1118
- color: var(--accent-mint);
1119
- font-family: monospace;
1120
  font-weight: 700;
1121
  }
1122
 
1123
  .trim-slider-group {
1124
  display: flex;
1125
  flex-direction: column;
1126
- gap: 4px;
1127
  }
1128
 
1129
  .trim-slider-meta {
1130
  display: flex;
1131
  justify-content: space-between;
1132
  align-items: center;
1133
- font-size: 0.75rem;
 
 
1134
  color: var(--text-secondary);
1135
  }
1136
 
1137
  .trim-value-label {
1138
- color: var(--accent-mint);
1139
- font-family: monospace;
1140
  font-weight: 600;
1141
  }
1142
 
1143
  .trimmer-controls {
1144
  display: flex;
1145
- gap: 8px;
1146
- margin-top: 4px;
1147
  }
1148
 
1149
  .btn-trimmer-control {
1150
  flex: 1;
1151
- padding: 8px 12px;
1152
- font-size: 0.75rem;
1153
- font-weight: 600;
 
 
1154
  border-radius: var(--radius-sm);
1155
  cursor: pointer;
1156
  transition: var(--transition);
1157
  display: flex;
1158
  align-items: center;
1159
  justify-content: center;
1160
- gap: 6px;
1161
  }
1162
 
1163
  .btn-trimmer-play {
1164
- background: rgba(60, 208, 162, 0.1);
1165
- border: 1px solid var(--accent-mint);
1166
- color: var(--accent-mint);
1167
  }
1168
 
1169
  .btn-trimmer-play:hover {
1170
- background: var(--accent-mint);
1171
- color: #000;
1172
- box-shadow: 0 0 10px var(--accent-mint-glow);
1173
  }
1174
 
1175
  .btn-trimmer-play.playing {
1176
  background: #ef4444;
1177
  border-color: #ef4444;
1178
- color: #fff;
1179
- box-shadow: 0 0 10px rgba(239, 68, 68, 0.4);
1180
  }
1181
 
1182
  .btn-trimmer-reset {
1183
- background: rgba(255, 255, 255, 0.05);
1184
- border: 1px solid rgba(255, 255, 255, 0.1);
1185
  color: var(--text-secondary);
1186
  }
1187
 
1188
  .btn-trimmer-reset:hover {
1189
- background: rgba(255, 255, 255, 0.1);
1190
  color: var(--text-primary);
1191
  }
1192
- </style>
1193
  </head>
1194
  <body>
1195
 
@@ -1846,7 +1865,7 @@
1846
  const isSelected = currentPercent >= startPercent && currentPercent <= endPercent;
1847
 
1848
  if (isSelected) {
1849
- ctx.fillStyle = "#3cd0a2"; // var(--accent-mint)
1850
  } else {
1851
  ctx.fillStyle = "rgba(255, 255, 255, 0.2)";
1852
  }
 
16
 
17
  <style>
18
  :root {
19
+ --bg-color: #07090e;
20
+ --sidebar-bg: #0b0e16;
21
+ --panel-bg: #10141f;
22
+ --panel-border: #1e2638;
23
+ --panel-border-focus: #ff7235;
24
  --text-primary: #f8fafc;
25
+ --text-secondary: #8a99ad;
26
+ --text-muted: #52637a;
27
+ --accent-copper: #ff7235;
28
+ --accent-copper-hover: #ff8954;
29
+ --accent-copper-glow: rgba(255, 114, 53, 0.15);
30
+ --accent-cyan: #00ebd4;
31
+ --accent-cyan-hover: #22ffe7;
32
+ --accent-cyan-glow: rgba(0, 235, 212, 0.12);
33
+ --accent-green: #00d58a;
34
+ --radius-lg: 8px;
35
+ --radius-md: 6px;
36
+ --radius-sm: 4px;
37
+ --transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
38
+ --font-mono: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
39
  }
40
 
41
  * {
 
46
 
47
  body {
48
  background-color: var(--bg-color);
49
+ background-image:
50
+ radial-gradient(rgba(255, 114, 53, 0.04) 1px, transparent 1px),
51
+ radial-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px);
52
+ background-size: 24px 24px, 12px 12px;
53
+ background-position: 0 0, 6px 6px;
54
  color: var(--text-primary);
55
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
56
  min-height: 100vh;
57
  line-height: 1.5;
58
+ overflow: hidden;
59
  position: relative;
60
  }
61
 
 
62
  body::before {
63
  content: '';
64
  position: absolute;
65
+ top: 16px;
66
+ left: 16px;
67
+ width: 24px;
68
+ height: 24px;
69
+ border-top: 2px solid rgba(255, 114, 53, 0.35);
70
+ border-left: 2px solid rgba(255, 114, 53, 0.35);
71
+ z-index: 1000;
72
  pointer-events: none;
 
73
  }
74
 
75
  body::after {
76
  content: '';
77
  position: absolute;
78
+ bottom: 16px;
79
+ right: 16px;
80
+ width: 24px;
81
+ height: 24px;
82
+ border-bottom: 2px solid rgba(255, 114, 53, 0.35);
83
+ border-right: 2px solid rgba(255, 114, 53, 0.35);
84
+ z-index: 1000;
85
  pointer-events: none;
 
86
  }
87
 
 
88
  .app-layout {
89
  display: flex;
90
  width: 100vw;
 
93
  overflow: hidden;
94
  }
95
 
 
96
  .sidebar {
97
+ width: 350px;
98
  height: 100%;
99
  background-color: var(--sidebar-bg);
100
  border-right: 1px solid var(--panel-border);
 
102
  flex-direction: column;
103
  position: relative;
104
  z-index: 100;
105
+ transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), margin-left 0.25s cubic-bezier(0.4, 0, 0.2, 1);
106
+ box-shadow: 6px 0 24px rgba(0, 0, 0, 0.3);
107
  flex-shrink: 0;
108
  }
109
 
110
  .sidebar.collapsed {
111
+ margin-left: -350px;
112
  transform: translateX(-100%);
113
  }
114
 
115
  .sidebar-header {
116
+ padding: 16px 20px;
117
  display: flex;
118
  align-items: center;
119
  justify-content: space-between;
120
+ border-bottom: 1px solid var(--panel-border);
121
+ background: rgba(0, 0, 0, 0.15);
122
  }
123
 
124
  .sidebar-title {
125
+ font-family: var(--font-mono);
126
+ font-size: 0.8rem;
127
  font-weight: 700;
128
+ color: var(--text-primary);
129
+ letter-spacing: 1.5px;
130
+ text-transform: uppercase;
131
  display: flex;
132
  align-items: center;
133
  gap: 8px;
 
137
  background: none;
138
  border: none;
139
  color: var(--text-secondary);
140
+ font-size: 0.9rem;
141
  cursor: pointer;
142
  transition: var(--transition);
143
  display: flex;
144
  align-items: center;
145
  justify-content: center;
146
  padding: 4px;
147
+ border-radius: var(--radius-sm);
148
  }
149
 
150
  .sidebar-close-btn:hover {
151
+ color: var(--accent-copper);
152
+ background: rgba(255, 255, 255, 0.03);
153
  }
154
 
155
  .sidebar-scrollable {
156
  flex: 1;
157
  overflow-y: auto;
158
+ padding: 20px;
159
  display: flex;
160
  flex-direction: column;
161
+ gap: 20px;
162
  }
163
 
 
164
  .sidebar-scrollable::-webkit-scrollbar {
165
+ width: 4px;
166
  }
167
 
168
  .sidebar-scrollable::-webkit-scrollbar-track {
 
170
  }
171
 
172
  .sidebar-scrollable::-webkit-scrollbar-thumb {
173
+ background: var(--panel-border);
174
+ border-radius: 2px;
175
  }
176
 
177
  .sidebar-scrollable::-webkit-scrollbar-thumb:hover {
178
+ background: var(--text-muted);
179
  }
180
 
 
181
  .content-area {
182
  flex: 1;
183
  height: 100%;
 
188
  transition: var(--transition);
189
  }
190
 
 
191
  .content-container {
192
  width: 100%;
193
+ max-width: 800px;
194
  margin: 0 auto;
195
+ padding: 24px 24px 60px 24px;
196
  display: flex;
197
  flex-direction: column;
198
+ gap: 20px;
199
  }
200
 
201
  header {
202
  display: flex;
203
  flex-direction: column;
204
+ align-items: flex-start;
205
+ text-align: left;
206
+ padding: 12px 0 20px 0;
207
+ gap: 8px;
208
  position: relative;
209
+ border-bottom: 1px solid var(--panel-border);
210
  }
211
 
212
  .logo-area {
213
  display: flex;
214
  align-items: center;
215
  gap: 12px;
216
+ flex-wrap: wrap;
217
  }
218
 
219
  .logo-emoji {
220
+ font-size: 1.6rem;
221
+ color: var(--accent-copper);
 
 
 
 
 
222
  }
223
 
224
  h1 {
225
+ font-family: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
226
+ font-size: 1.8rem;
227
  font-weight: 800;
228
+ color: #ffffff;
229
+ letter-spacing: 0.5px;
230
+ text-transform: uppercase;
 
231
  }
232
 
233
  .brand-badge {
234
+ font-family: var(--font-mono);
235
+ font-size: 0.65rem;
236
  font-weight: 600;
237
+ background: rgba(255, 114, 53, 0.08);
238
+ color: var(--accent-copper);
239
+ border: 1px solid rgba(255, 114, 53, 0.2);
240
+ padding: 2px 6px;
241
+ border-radius: var(--radius-sm);
242
  text-transform: uppercase;
243
  letter-spacing: 0.5px;
244
  }
245
 
246
  .subtitle {
247
+ font-size: 0.88rem;
248
  color: var(--text-secondary);
249
  font-weight: 400;
250
  }
251
 
252
  .ltx-banner {
253
+ background: #0f131d;
254
  border: 1px solid var(--panel-border);
255
+ border-left: 3px solid var(--accent-copper);
256
  border-radius: var(--radius-md);
257
+ padding: 12px 16px;
258
  color: #cbd5e1;
259
+ font-size: 0.8rem;
260
  line-height: 1.5;
261
  text-align: left;
262
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
 
263
  width: 100%;
264
  }
265
 
266
  .ltx-banner a {
267
+ color: var(--accent-copper);
268
  font-weight: 600;
269
  text-decoration: none;
270
  transition: var(--transition);
 
275
  text-decoration: underline;
276
  }
277
 
 
278
  .btn-toggle-sidebar {
279
+ background: #111520;
280
  border: 1px solid var(--panel-border);
281
  color: #ffffff;
282
+ font-family: var(--font-mono);
283
+ font-size: 0.72rem;
284
  font-weight: 600;
285
+ padding: 8px 14px;
286
+ border-radius: var(--radius-sm);
287
  cursor: pointer;
288
  display: flex;
289
  align-items: center;
290
  gap: 8px;
291
  transition: var(--transition);
292
  outline: none;
293
+ letter-spacing: 0.5px;
294
+ text-transform: uppercase;
295
  }
296
 
297
  .btn-toggle-sidebar:hover {
298
+ background: rgba(255, 114, 53, 0.05);
299
+ border-color: var(--accent-copper);
 
300
  }
301
 
 
302
  .main-panel {
303
  background: var(--panel-bg);
304
  border: 1px solid var(--panel-border);
305
  border-radius: var(--radius-lg);
306
+ padding: 20px;
307
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
 
308
  display: flex;
309
  flex-direction: column;
310
+ gap: 16px;
 
311
  }
312
 
313
  .form-group {
314
  display: flex;
315
  flex-direction: column;
316
+ gap: 6px;
317
  }
318
 
319
  .form-label {
320
+ font-family: var(--font-mono);
321
+ font-size: 0.72rem;
322
  font-weight: 700;
323
  text-transform: uppercase;
324
  letter-spacing: 0.8px;
 
329
  }
330
 
331
  .label-badge {
332
+ font-family: var(--font-mono);
333
+ font-size: 0.65rem;
334
+ color: var(--text-muted);
335
+ text-transform: uppercase;
336
+ font-weight: 500;
337
+ letter-spacing: 0.3px;
338
  }
339
 
340
  .textarea-custom {
341
  width: 100%;
342
+ background: #090c13;
343
  border: 1px solid var(--panel-border);
344
  border-radius: var(--radius-md);
345
+ padding: 14px;
346
  color: var(--text-primary);
347
  font-family: 'Inter', sans-serif;
348
+ font-size: 0.92rem;
349
+ line-height: 1.55;
350
  resize: vertical;
351
+ min-height: 120px;
352
  outline: none;
353
  transition: var(--transition);
354
  }
355
 
356
  .textarea-custom:focus {
357
+ border-color: var(--accent-copper);
358
+ box-shadow: 0 0 0 2px var(--accent-copper-glow);
 
359
  }
360
 
 
361
  .upload-zone {
362
+ border: 1px dashed var(--panel-border);
363
  border-radius: var(--radius-md);
364
+ padding: 16px;
365
  text-align: center;
366
  cursor: pointer;
367
+ background: rgba(255, 255, 255, 0.01);
368
  display: flex;
369
  flex-direction: column;
370
  align-items: center;
371
  gap: 6px;
372
  transition: var(--transition);
373
+ min-height: 80px;
374
  justify-content: center;
375
  }
376
 
377
  .upload-zone:hover, .upload-zone.dragover {
378
+ border-color: var(--accent-copper);
379
+ background: rgba(255, 114, 53, 0.02);
380
  }
381
 
382
  .upload-icon {
383
+ font-size: 1.3rem;
384
+ color: var(--accent-copper);
 
385
  }
386
 
387
  .upload-text {
388
+ font-size: 0.76rem;
389
  color: var(--text-secondary);
390
  }
391
 
392
  .upload-text strong {
393
  color: #ffffff;
394
+ font-weight: 600;
395
  }
396
 
397
  .hidden-input {
 
402
  display: flex;
403
  align-items: center;
404
  justify-content: space-between;
405
+ background: rgba(255, 114, 53, 0.05);
406
+ border: 1px solid rgba(255, 114, 53, 0.2);
407
+ padding: 8px 12px;
408
  border-radius: var(--radius-md);
409
  width: 100%;
410
  }
 
412
  .file-info {
413
  display: flex;
414
  align-items: center;
415
+ gap: 8px;
416
+ font-size: 0.78rem;
417
+ font-family: var(--font-mono);
418
  font-weight: 500;
419
  overflow: hidden;
420
  white-space: nowrap;
 
425
  background: none;
426
  border: none;
427
  color: var(--text-secondary);
428
+ font-size: 0.9rem;
429
  cursor: pointer;
430
  transition: var(--transition);
431
  padding: 2px;
432
  display: flex;
433
  align-items: center;
434
  justify-content: center;
435
+ border-radius: var(--radius-sm);
436
  }
437
 
438
  .btn-clear:hover {
439
  color: #ffffff;
440
+ background: rgba(255, 255, 255, 0.05);
441
  }
442
 
 
443
  .settings-block {
444
  display: flex;
445
  flex-direction: column;
446
+ gap: 14px;
447
+ background: rgba(0, 0, 0, 0.1);
448
+ border: 1px solid var(--panel-border);
449
+ padding: 14px;
450
  border-radius: var(--radius-md);
451
  }
452
 
453
  .settings-block-title {
454
+ font-family: var(--font-mono);
455
+ font-size: 0.75rem;
456
  font-weight: 700;
457
+ letter-spacing: 0.8px;
458
  text-transform: uppercase;
459
  color: #ffffff;
460
+ border-bottom: 1px solid var(--panel-border);
461
+ padding-bottom: 6px;
462
+ margin-bottom: 2px;
463
  }
464
 
465
  .slider-group {
466
  display: flex;
467
  flex-direction: column;
468
+ gap: 4px;
469
  }
470
 
471
  .slider-meta {
472
  display: flex;
473
  justify-content: space-between;
474
+ font-size: 0.75rem;
475
  color: var(--text-secondary);
476
  font-weight: 500;
477
  }
478
 
479
  .slider-value {
480
+ color: var(--accent-copper);
481
  font-weight: 700;
482
+ font-family: var(--font-mono);
483
+ background: rgba(255, 114, 53, 0.05);
484
+ padding: 1px 4px;
485
+ border-radius: var(--radius-sm);
486
+ border: 1px solid rgba(255, 114, 53, 0.15);
487
  }
488
 
489
  input[type="range"] {
490
  -webkit-appearance: none;
491
  width: 100%;
492
+ height: 6px;
493
+ background: #090c13;
494
+ border: 1px solid var(--panel-border);
495
+ border-radius: 3px;
496
  outline: none;
497
  cursor: pointer;
498
  }
499
 
500
  input[type="range"]::-webkit-slider-thumb {
501
  -webkit-appearance: none;
502
+ width: 10px;
503
+ height: 16px;
504
+ border-radius: 2px;
505
+ background: var(--accent-copper);
506
+ border: 1px solid #ffffff;
507
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
508
  transition: var(--transition);
509
  }
510
 
511
  input[type="range"]::-webkit-slider-thumb:hover {
 
512
  background: #ffffff;
513
+ transform: scale(1.1);
514
  }
515
 
 
516
  .seed-row {
517
  display: flex;
518
+ gap: 6px;
519
  align-items: center;
520
  }
521
 
522
  .input-seed {
523
  flex: 1;
524
+ background: #090c13;
525
+ border: 1px solid var(--panel-border);
526
  border-radius: var(--radius-sm);
527
+ padding: 6px 10px;
528
  color: var(--text-primary);
529
+ font-family: var(--font-mono);
530
  outline: none;
531
+ font-size: 0.8rem;
532
  transition: var(--transition);
533
+ height: 32px;
534
  }
535
 
536
  .input-seed:focus {
537
+ border-color: var(--accent-copper);
538
  }
539
 
540
  .btn-seed-random {
541
+ background: #19202f;
542
+ border: 1px solid var(--panel-border);
543
  border-radius: var(--radius-sm);
544
  color: var(--text-primary);
545
+ height: 32px;
546
+ width: 32px;
547
  display: flex;
548
  align-items: center;
549
  justify-content: center;
550
  cursor: pointer;
551
  transition: var(--transition);
552
+ font-size: 0.8rem;
553
  }
554
 
555
  .btn-seed-random:hover {
556
+ background: rgba(255, 114, 53, 0.05);
557
+ border-color: var(--accent-copper);
558
  }
559
 
 
560
  .btn-generate {
561
+ background: var(--accent-copper);
562
  border: none;
563
  border-radius: var(--radius-md);
564
  color: #07090e;
565
+ font-family: var(--font-mono);
566
+ font-size: 0.9rem;
567
+ font-weight: 700;
568
+ padding: 12px;
569
  cursor: pointer;
570
  transition: var(--transition);
571
  display: flex;
572
  align-items: center;
573
  justify-content: center;
574
+ gap: 8px;
575
+ box-shadow: 0 4px 12px var(--accent-copper-glow);
576
+ min-height: 42px;
577
+ letter-spacing: 1px;
578
+ text-transform: uppercase;
579
  }
580
 
581
  .btn-generate:hover:not(:disabled) {
582
+ transform: translateY(-1px);
583
+ box-shadow: 0 6px 16px rgba(255, 114, 53, 0.35);
584
+ background: var(--accent-copper-hover);
585
  }
586
 
587
  .btn-generate:active:not(:disabled) {
 
589
  }
590
 
591
  .btn-generate:disabled {
592
+ background: #19202f;
593
+ color: var(--text-muted);
594
+ border: 1px solid var(--panel-border);
595
  cursor: not-allowed;
596
  box-shadow: none;
597
  }
598
 
 
599
  .output-wrapper {
600
+ background: #090c13;
601
  border: 1px solid var(--panel-border);
602
  border-radius: var(--radius-md);
603
+ padding: 16px;
604
  display: flex;
605
  flex-direction: column;
606
  align-items: center;
607
  justify-content: center;
608
+ min-height: 120px;
609
  position: relative;
610
  }
611
 
 
615
  display: flex;
616
  flex-direction: column;
617
  align-items: center;
618
+ gap: 8px;
619
  }
620
 
621
  .empty-icon {
622
+ font-size: 1.8rem;
623
+ opacity: 0.5;
624
+ color: var(--accent-copper);
625
  }
626
 
627
  .empty-text {
628
+ font-family: var(--font-mono);
629
+ font-size: 0.72rem;
630
+ letter-spacing: 0.5px;
631
+ text-transform: uppercase;
632
  }
633
 
 
634
  .audio-player {
635
  width: 100%;
636
  display: flex;
637
  flex-direction: column;
638
+ gap: 12px;
639
  }
640
 
641
  .visualizer-box {
642
  width: 100%;
643
+ height: 38px;
644
+ background: #06090e;
645
  border-radius: var(--radius-sm);
646
  display: flex;
647
  align-items: center;
648
  justify-content: center;
649
+ border: 1px solid var(--panel-border);
650
  overflow: hidden;
651
  }
652
 
653
  .visualizer-wave {
654
  display: flex;
655
  align-items: center;
656
+ gap: 2px;
657
  height: 100%;
658
  }
659
 
660
  .wave-bar {
661
  width: 3px;
662
+ height: 4px;
663
+ background: var(--accent-cyan);
664
  border-radius: 1px;
665
  transition: var(--transition);
666
  }
667
 
668
  .audio-player.playing .wave-bar {
669
+ animation: playWave 1s infinite ease-in-out alternate;
670
  }
671
 
672
  @keyframes playWave {
673
+ 0% { height: 4px; }
674
+ 100% { height: 26px; }
675
  }
676
 
677
+ .wave-bar:nth-child(2n) { background: #00d084; animation-delay: 0.1s; }
678
+ .wave-bar:nth-child(3n) { background: #00ebd4; animation-delay: 0.2s; }
679
+ .wave-bar:nth-child(4n) { background: #008aff; animation-delay: 0.3s; }
680
+ .wave-bar:nth-child(5n) { background: var(--accent-cyan); animation-delay: 0.4s; }
681
 
682
  .player-row {
683
  display: flex;
684
  align-items: center;
685
+ gap: 10px;
686
  width: 100%;
687
  }
688
 
689
  .btn-play {
690
+ background: var(--accent-cyan);
691
  border: none;
692
+ color: #07090e;
693
+ width: 34px;
694
+ height: 34px;
695
+ border-radius: var(--radius-sm);
696
  display: flex;
697
  align-items: center;
698
  justify-content: center;
699
+ font-size: 0.9rem;
700
  cursor: pointer;
701
  transition: var(--transition);
702
+ box-shadow: 0 2px 8px var(--accent-cyan-glow);
703
  flex-shrink: 0;
704
  }
705
 
706
  .btn-play:hover {
707
+ transform: scale(1.03);
708
+ background: var(--accent-cyan-hover);
709
+ box-shadow: 0 4px 12px rgba(0, 235, 212, 0.3);
710
  }
711
 
712
  .progress-box {
 
719
  .time-lbl {
720
  font-size: 0.72rem;
721
  color: var(--text-secondary);
722
+ font-family: var(--font-mono);
723
  min-width: 32px;
724
  }
725
 
 
726
  .progress-box input[type="range"]::-webkit-slider-thumb {
727
+ background: var(--accent-cyan);
728
+ border-color: #ffffff;
729
+ box-shadow: 0 1px 4px rgba(0, 235, 212, 0.4);
730
  }
731
 
732
  .deck-footer {
 
734
  align-items: center;
735
  justify-content: space-between;
736
  width: 100%;
737
+ border-top: 1px solid var(--panel-border);
738
+ padding-top: 10px;
739
+ gap: 10px;
740
  flex-wrap: wrap;
741
  }
742
 
 
744
  display: flex;
745
  align-items: center;
746
  gap: 6px;
747
+ max-width: 80px;
748
  flex-shrink: 0;
749
  }
750
 
751
  .vol-icon {
752
+ font-size: 0.72rem;
753
  color: var(--text-secondary);
754
  }
755
 
 
764
  }
765
 
766
  .btn-speed {
767
+ background: #19202f;
768
+ border: 1px solid var(--panel-border);
769
+ border-radius: var(--radius-sm);
770
  color: var(--text-secondary);
771
+ font-family: var(--font-mono);
772
+ font-size: 0.65rem;
773
  font-weight: 600;
774
  padding: 3px 6px;
775
  cursor: pointer;
 
777
  }
778
 
779
  .btn-speed.active, .btn-speed:hover {
780
+ background: rgba(0, 235, 212, 0.08);
781
+ color: var(--accent-cyan);
782
+ border-color: rgba(0, 235, 212, 0.25);
783
  }
784
 
785
  .btn-download-wav {
786
+ background: #19202f;
787
  border: 1px solid var(--panel-border);
788
  border-radius: var(--radius-sm);
789
  color: #ffffff;
790
+ font-family: var(--font-mono);
791
+ font-size: 0.7rem;
792
  font-weight: 600;
793
+ padding: 4px 10px;
794
  text-decoration: none;
795
  display: flex;
796
  align-items: center;
797
+ gap: 5px;
798
  transition: var(--transition);
799
+ text-transform: uppercase;
800
+ letter-spacing: 0.5px;
801
  }
802
 
803
  .btn-download-wav:hover {
804
+ background: var(--accent-copper);
805
  color: #07090e;
806
+ border-color: var(--accent-copper);
807
+ transform: translateY(-0.5px);
808
  }
809
 
810
  @media (max-width: 480px) {
811
  .deck-footer {
812
  flex-direction: column;
813
  align-items: stretch;
814
+ gap: 10px;
815
  }
816
  .vol-slider {
817
  max-width: 100%;
 
824
  }
825
  }
826
 
 
827
  .status-alert {
828
  display: flex;
829
  align-items: center;
830
+ gap: 8px;
831
+ font-family: var(--font-mono);
832
+ font-size: 0.72rem;
833
+ font-weight: 600;
834
+ text-transform: uppercase;
835
+ padding: 8px 12px;
836
  border-radius: var(--radius-md);
837
  border: 1px solid transparent;
838
  display: none;
839
+ margin-bottom: 10px;
840
  width: 100%;
841
+ letter-spacing: 0.5px;
842
  }
843
 
844
  .status-alert.success {
845
+ background: rgba(0, 213, 138, 0.05);
846
+ border-color: rgba(0, 213, 138, 0.2);
847
  color: var(--accent-green);
848
  }
849
 
850
  .status-alert.info {
851
+ background: rgba(255, 114, 53, 0.05);
852
+ border-color: rgba(255, 114, 53, 0.2);
853
+ color: #ff854f;
854
  }
855
 
856
  .status-alert.error {
857
+ background: rgba(239, 68, 68, 0.05);
858
+ border-color: rgba(239, 68, 68, 0.2);
859
  color: #f87171;
860
  }
861
 
862
  .alert-spinner {
863
+ width: 12px;
864
+ height: 12px;
865
  border: 2px solid rgba(255, 255, 255, 0.1);
866
  border-top: 2px solid currentColor;
867
  border-radius: 50%;
 
873
  100% { transform: rotate(360deg); }
874
  }
875
 
 
876
  .demo-capsules {
877
  display: flex;
878
  flex-direction: column;
879
+ gap: 6px;
880
  }
881
 
882
  .demo-pill {
883
+ background: #111520;
884
+ border: 1px solid var(--panel-border);
885
  border-radius: var(--radius-md);
886
+ padding: 8px 12px;
887
  cursor: pointer;
888
  transition: var(--transition);
889
  display: flex;
890
  justify-content: space-between;
891
  align-items: center;
892
+ gap: 10px;
893
  text-align: left;
894
  }
895
 
896
  .demo-pill:hover {
897
+ background: rgba(255, 114, 53, 0.02);
898
+ border-color: rgba(255, 114, 53, 0.2);
899
+ transform: translateX(1px);
900
  }
901
 
902
  .demo-pill.active {
903
+ border-color: var(--accent-copper);
904
+ background: rgba(255, 114, 53, 0.05);
905
  }
906
 
907
  .demo-pill-title {
908
+ font-size: 0.76rem;
909
  font-weight: 600;
910
  color: #ffffff;
911
  white-space: nowrap;
912
  overflow: hidden;
913
  text-overflow: ellipsis;
914
+ max-width: 160px;
915
  }
916
 
917
  .pill-labels {
 
921
  }
922
 
923
  .pill-badge {
924
+ font-family: var(--font-mono);
925
+ font-size: 0.6rem;
926
  font-weight: 700;
927
+ padding: 1px 4px;
928
+ border-radius: var(--radius-sm);
929
  text-transform: uppercase;
930
  }
931
 
932
+ .pill-badge-male { background: rgba(59, 130, 246, 0.1); color: #60a5fa; }
933
+ .pill-badge-female { background: rgba(236, 72, 153, 0.1); color: #f472b6; }
934
+ .pill-badge-long { background: rgba(139, 92, 246, 0.1); color: #c084fc; }
935
 
 
936
  .guide-header {
937
+ font-family: var(--font-mono);
938
+ font-size: 0.75rem;
939
  font-weight: 700;
940
  color: #ffffff;
941
  cursor: pointer;
 
944
  align-items: center;
945
  user-select: none;
946
  text-transform: uppercase;
947
+ letter-spacing: 0.8px;
948
+ border-bottom: 1px solid var(--panel-border);
949
+ padding-bottom: 6px;
950
+ margin-bottom: 2px;
951
  }
952
 
953
  .guide-body {
954
  max-height: 0;
955
  overflow: hidden;
956
+ transition: max-height 0.25s cubic-bezier(0.4, 0, 0.2, 1);
957
+ font-size: 0.74rem;
958
  color: var(--text-secondary);
959
  display: flex;
960
  flex-direction: column;
961
+ gap: 10px;
962
+ line-height: 1.5;
963
  }
964
 
965
  .guide-body.open {
966
  max-height: 380px;
967
+ margin-top: 10px;
968
  }
969
 
970
  .guide-block-title {
971
  color: #ffffff;
972
+ font-family: var(--font-mono);
973
+ font-weight: 700;
974
  margin-bottom: 2px;
975
+ font-size: 0.74rem;
976
+ text-transform: uppercase;
977
  }
978
 
979
  .guide-list {
980
+ padding-left: 12px;
981
  display: flex;
982
  flex-direction: column;
983
+ gap: 2px;
984
  }
985
 
 
986
  .sidebar-overlay {
987
  position: fixed;
988
  top: 0;
989
  left: 0;
990
  width: 100vw;
991
  height: 100vh;
992
+ background: rgba(0, 0, 0, 0.65);
 
993
  z-index: 90;
994
  opacity: 0;
995
  pointer-events: none;
996
+ transition: opacity 0.2s ease;
997
  }
998
 
999
  .sidebar-overlay.active {
 
1003
 
1004
  footer {
1005
  margin-top: auto;
1006
+ text-align: left;
1007
+ padding: 24px 0;
1008
+ font-family: var(--font-mono);
1009
+ font-size: 0.68rem;
1010
+ color: var(--text-muted);
1011
+ border-top: 1px solid var(--panel-border);
1012
+ text-transform: uppercase;
1013
+ letter-spacing: 0.3px;
1014
  }
1015
 
 
1016
  @media (max-width: 992px) {
1017
  .sidebar {
1018
  position: fixed;
 
1026
  transform: translateX(-100%);
1027
  }
1028
  h1 {
1029
+ font-size: 1.6rem;
1030
  }
1031
  .logo-emoji {
1032
+ font-size: 1.4rem;
1033
  }
1034
  }
1035
 
1036
  @media (min-width: 993px) {
1037
  .sidebar-close-btn {
1038
+ display: none;
1039
  }
1040
  }
1041
 
 
1042
  .audio-trimmer-container {
1043
  display: flex;
1044
  flex-direction: column;
1045
+ gap: 10px;
1046
+ background: rgba(0, 0, 0, 0.15);
1047
+ border: 1px solid var(--panel-border);
1048
+ border-left: 2px solid var(--accent-copper);
1049
  border-radius: var(--radius-md);
1050
+ padding: 12px;
1051
+ margin-top: 8px;
1052
  transition: var(--transition);
1053
  }
1054
 
 
1056
  display: flex;
1057
  justify-content: space-between;
1058
  align-items: center;
1059
+ border-bottom: 1px solid var(--panel-border);
1060
+ padding-bottom: 6px;
1061
  }
1062
 
1063
  .trimmer-file-info {
 
1068
  }
1069
 
1070
  .trimmer-file-icon {
1071
+ font-size: 0.95rem;
1072
  }
1073
 
1074
  .trimmer-filename {
1075
+ font-family: var(--font-mono);
1076
+ font-size: 0.74rem;
1077
  color: var(--text-primary);
1078
  font-weight: 500;
1079
  white-space: nowrap;
1080
  overflow: hidden;
1081
  text-overflow: ellipsis;
1082
+ max-width: 160px;
1083
  }
1084
 
1085
  .btn-clear-trimmer {
 
1087
  border: none;
1088
  color: var(--text-secondary);
1089
  cursor: pointer;
1090
+ font-size: 0.8rem;
1091
  padding: 4px;
1092
+ border-radius: var(--radius-sm);
1093
  display: flex;
1094
  align-items: center;
1095
  justify-content: center;
 
1097
  }
1098
 
1099
  .btn-clear-trimmer:hover {
1100
+ color: #f87171;
1101
+ background: rgba(239, 68, 68, 0.05);
1102
  }
1103
 
1104
  .trimmer-waveform-box {
1105
  position: relative;
1106
  width: 100%;
1107
+ height: 52px;
1108
+ background: #06090e;
1109
+ border: 1px solid var(--panel-border);
1110
  border-radius: var(--radius-sm);
1111
  overflow: hidden;
1112
  }
 
1121
  display: flex;
1122
  justify-content: space-between;
1123
  align-items: center;
1124
+ font-family: var(--font-mono);
1125
+ font-size: 0.7rem;
1126
+ text-transform: uppercase;
1127
+ margin-bottom: -2px;
1128
  }
1129
 
1130
  .duration-title {
 
1132
  }
1133
 
1134
  .duration-val {
1135
+ color: var(--accent-copper);
 
1136
  font-weight: 700;
1137
  }
1138
 
1139
  .trim-slider-group {
1140
  display: flex;
1141
  flex-direction: column;
1142
+ gap: 2px;
1143
  }
1144
 
1145
  .trim-slider-meta {
1146
  display: flex;
1147
  justify-content: space-between;
1148
  align-items: center;
1149
+ font-size: 0.7rem;
1150
+ font-family: var(--font-mono);
1151
+ text-transform: uppercase;
1152
  color: var(--text-secondary);
1153
  }
1154
 
1155
  .trim-value-label {
1156
+ color: var(--accent-copper);
 
1157
  font-weight: 600;
1158
  }
1159
 
1160
  .trimmer-controls {
1161
  display: flex;
1162
+ gap: 6px;
1163
+ margin-top: 2px;
1164
  }
1165
 
1166
  .btn-trimmer-control {
1167
  flex: 1;
1168
+ padding: 6px 10px;
1169
+ font-family: var(--font-mono);
1170
+ font-size: 0.7rem;
1171
+ text-transform: uppercase;
1172
+ font-weight: 700;
1173
  border-radius: var(--radius-sm);
1174
  cursor: pointer;
1175
  transition: var(--transition);
1176
  display: flex;
1177
  align-items: center;
1178
  justify-content: center;
1179
+ gap: 4px;
1180
  }
1181
 
1182
  .btn-trimmer-play {
1183
+ background: rgba(255, 114, 53, 0.05);
1184
+ border: 1px solid var(--accent-copper);
1185
+ color: var(--accent-copper);
1186
  }
1187
 
1188
  .btn-trimmer-play:hover {
1189
+ background: var(--accent-copper);
1190
+ color: #07090e;
1191
+ box-shadow: 0 0 8px var(--accent-copper-glow);
1192
  }
1193
 
1194
  .btn-trimmer-play.playing {
1195
  background: #ef4444;
1196
  border-color: #ef4444;
1197
+ color: #ffffff;
1198
+ box-shadow: 0 0 8px rgba(239, 68, 68, 0.35);
1199
  }
1200
 
1201
  .btn-trimmer-reset {
1202
+ background: #19202f;
1203
+ border: 1px solid var(--panel-border);
1204
  color: var(--text-secondary);
1205
  }
1206
 
1207
  .btn-trimmer-reset:hover {
1208
+ background: rgba(255, 255, 255, 0.03);
1209
  color: var(--text-primary);
1210
  }
1211
+ </style>
1212
  </head>
1213
  <body>
1214
 
 
1865
  const isSelected = currentPercent >= startPercent && currentPercent <= endPercent;
1866
 
1867
  if (isSelected) {
1868
+ ctx.fillStyle = "#ff7235"; // var(--accent-copper)
1869
  } else {
1870
  ctx.fillStyle = "rgba(255, 255, 255, 0.2)";
1871
  }