Kuberwastaken commited on
Commit
5a99b6a
·
1 Parent(s): b826a4f

UI Overhaul

Browse files
Files changed (1) hide show
  1. gradio_app.py +76 -196
gradio_app.py CHANGED
@@ -28,14 +28,14 @@ custom_css = """
28
  }
29
 
30
  .gradio-container {
31
- background: #0a0a0f !important;
32
  color: #fff !important;
33
  min-height: 100vh;
34
  position: relative;
35
  overflow: hidden;
36
  }
37
 
38
- /* Animated Background */
39
  .gradio-container::before {
40
  content: '';
41
  position: fixed;
@@ -45,17 +45,17 @@ custom_css = """
45
  bottom: 0;
46
  background:
47
  linear-gradient(125deg,
48
- #0a0a0f 0%,
49
- rgba(99, 102, 241, 0.05) 30%,
50
- rgba(99, 102, 241, 0.1) 50%,
51
- rgba(99, 102, 241, 0.05) 70%,
52
- #0a0a0f 100%);
53
- animation: gradientMove 15s ease infinite;
54
  background-size: 400% 400%;
55
  z-index: 0;
56
  }
57
 
58
- /* Floating Particles */
59
  .gradio-container::after {
60
  content: '';
61
  position: fixed;
@@ -63,14 +63,14 @@ custom_css = """
63
  left: 0;
64
  width: 100%;
65
  height: 100%;
66
- background: radial-gradient(circle at center, transparent 0%, #0a0a0f 70%),
67
- url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='50' cy='50' r='1' fill='rgba(99, 102, 241, 0.15)'/%3E%3C/svg%3E");
68
- opacity: 0.5;
69
- animation: floatingParticles 20s linear infinite;
70
  z-index: 1;
71
  }
72
 
73
- /* Futuristic Header */
74
  .treat-title {
75
  text-align: center;
76
  padding: 3rem 1rem;
@@ -78,7 +78,7 @@ custom_css = """
78
  overflow: hidden;
79
  z-index: 2;
80
  background: linear-gradient(180deg,
81
- rgba(99, 102, 241, 0.1),
82
  transparent 70%);
83
  }
84
 
@@ -87,29 +87,31 @@ custom_css = """
87
  position: absolute;
88
  top: 0;
89
  left: 50%;
90
- width: 80%;
91
  height: 1px;
92
  background: linear-gradient(90deg,
93
  transparent,
94
- rgba(99, 102, 241, 0.5),
95
  transparent);
96
  transform: translateX(-50%);
97
- animation: scanline 3s ease-in-out infinite;
98
  }
99
 
100
  .treat-title h1 {
101
  font-size: 4.5rem;
102
  font-weight: 800;
103
  background: linear-gradient(135deg,
104
- #2a2b55 0%,
105
- #6366f1 50%,
106
- #2a2b55 100%);
 
 
107
  background-size: 200% auto;
108
  -webkit-background-clip: text;
109
  -webkit-text-fill-color: transparent;
110
  margin-bottom: 0.5rem;
111
  letter-spacing: -0.05em;
112
- animation: gradientFlow 8s ease infinite;
113
  position: relative;
114
  }
115
 
@@ -122,36 +124,26 @@ custom_css = """
122
  height: 100%;
123
  background: linear-gradient(135deg,
124
  transparent 0%,
125
- rgba(99, 102, 241, 0.4) 50%,
126
  transparent 100%);
127
  background-size: 200% auto;
128
  -webkit-background-clip: text;
129
  -webkit-text-fill-color: transparent;
130
  opacity: 0.5;
131
- animation: textGlow 4s ease-in-out infinite;
132
- }
133
-
134
- .treat-title p {
135
- font-size: 1.1rem;
136
- color: rgba(255, 255, 255, 0.7);
137
- max-width: 600px;
138
- margin: 0 auto;
139
- position: relative;
140
- animation: fadeInUp 1s ease-out;
141
  }
142
 
143
- /* Tabs Styling */
144
  .tabs {
145
- background: rgba(17, 17, 27, 0.7);
146
- border: 1px solid rgba(99, 102, 241, 0.2);
147
  border-radius: 16px;
148
  padding: 1rem;
149
  margin: 0 1rem 2rem 1rem;
150
  position: relative;
151
  z-index: 2;
152
  backdrop-filter: blur(10px);
153
- box-shadow: 0 0 30px rgba(99, 102, 241, 0.1);
154
- animation: floatIn 1s ease-out;
155
  }
156
 
157
  .tabs::before {
@@ -162,70 +154,52 @@ custom_css = """
162
  right: -1px;
163
  bottom: -1px;
164
  background: linear-gradient(45deg,
165
- rgba(99, 102, 241, 0.1),
166
  transparent,
167
- rgba(99, 102, 241, 0.1));
168
  border-radius: 16px;
169
  z-index: -1;
170
- animation: borderGlow 4s ease-in-out infinite;
171
  }
172
 
173
- /* Content Area */
174
  .content-area {
175
- background: rgba(17, 17, 27, 0.7) !important;
176
- border: 1px solid rgba(99, 102, 241, 0.2) !important;
177
  border-radius: 12px !important;
178
  padding: 1.5rem !important;
179
  backdrop-filter: blur(10px);
180
  position: relative;
181
- overflow: hidden;
182
- animation: fadeScale 0.5s ease-out;
183
- }
184
-
185
- .content-area::before {
186
- content: '';
187
- position: absolute;
188
- top: -50%;
189
- left: -50%;
190
- width: 200%;
191
- height: 200%;
192
- background: radial-gradient(circle at center,
193
- rgba(99, 102, 241, 0.1) 0%,
194
- transparent 70%);
195
- animation: rotateGradient 10s linear infinite;
196
  }
197
 
198
- /* Input Fields */
199
  .gradio-textbox textarea {
200
- background: rgba(17, 17, 27, 0.6) !important;
201
- border: 1px solid rgba(99, 102, 241, 0.3) !important;
202
  border-radius: 8px !important;
203
  color: rgba(255, 255, 255, 0.9) !important;
204
  font-size: 0.95rem !important;
205
  line-height: 1.6 !important;
206
  padding: 1rem !important;
207
- transition: all 0.3s ease;
208
- position: relative;
209
- z-index: 2;
210
  }
211
 
212
  .gradio-textbox textarea:focus {
213
- border-color: #6366f1 !important;
214
- box-shadow: 0 0 20px rgba(99, 102, 241, 0.2) !important;
215
- background: rgba(17, 17, 27, 0.8) !important;
216
  transform: translateY(-2px);
217
  }
218
 
219
- /* Buttons */
220
  .gradio-button {
221
  background: linear-gradient(45deg,
222
- #6366f1,
223
- #818cf8,
224
- #6366f1) !important;
 
225
  background-size: 200% auto !important;
226
  border: none !important;
227
  border-radius: 8px !important;
228
- color: white !important;
229
  font-weight: 600 !important;
230
  font-size: 0.95rem !important;
231
  padding: 0.75rem 1.5rem !important;
@@ -233,44 +207,15 @@ custom_css = """
233
  position: relative;
234
  overflow: hidden;
235
  transition: all 0.3s ease !important;
236
- animation: gradientFlow 3s ease infinite;
237
- }
238
-
239
- .gradio-button::before {
240
- content: '';
241
- position: absolute;
242
- top: -50%;
243
- left: -50%;
244
- width: 200%;
245
- height: 200%;
246
- background: radial-gradient(circle at center,
247
- rgba(255, 255, 255, 0.2) 0%,
248
- transparent 70%);
249
- transform: scale(0);
250
- transition: transform 0.5s ease;
251
  }
252
 
253
  .gradio-button:hover {
254
  transform: translateY(-2px);
255
- box-shadow: 0 5px 20px rgba(99, 102, 241, 0.4) !important;
256
- }
257
-
258
- .gradio-button:hover::before {
259
- transform: scale(1);
260
- }
261
-
262
- /* Results Area */
263
- .results-area {
264
- background: rgba(17, 17, 27, 0.7) !important;
265
- border: 1px solid rgba(99, 102, 241, 0.2) !important;
266
- border-radius: 12px !important;
267
- margin-top: 2rem !important;
268
- backdrop-filter: blur(10px);
269
- animation: slideUp 0.5s ease-out;
270
- position: relative;
271
- overflow: hidden;
272
  }
273
 
 
274
  .footer {
275
  text-align: center;
276
  padding: 2rem 0;
@@ -281,61 +226,31 @@ custom_css = """
281
  }
282
 
283
  .footer p {
284
- color: rgba(255, 255, 255, 0.8);
285
- display: flex;
286
- align-items: center;
287
- justify-content: center;
288
- gap: 0.5rem;
289
  }
290
 
291
  .footer .heart {
292
- color: #6366f1;
293
- display: inline-block;
294
- position: relative;
295
- font-size: 1.0rem;
296
- transform-origin: center;
297
- animation: heartbeat 1.5s ease infinite;
298
- }
299
-
300
- .footer .heart::before,
301
- .footer .heart::after {
302
- content: '✦';
303
- position: absolute;
304
- opacity: 0;
305
- font-size: 0.6rem;
306
- animation: sparkle 1.5s ease infinite;
307
- }
308
-
309
- .footer .heart::before {
310
- top: -8px;
311
- left: -8px;
312
- animation-delay: 0.2s;
313
- }
314
-
315
- .footer .heart::after {
316
- top: -8px;
317
- right: -8px;
318
- animation-delay: 0.4s;
319
  }
320
 
321
  .footer .name {
322
- color: #6366f1;
323
  text-decoration: none;
324
- position: relative;
325
  transition: all 0.3s ease;
326
  padding: 0 4px;
327
  }
328
 
329
  .footer .name:hover {
330
- color: #818cf8;
331
  }
332
 
333
  footer {
334
  visibility: hidden;
335
  }
336
 
337
- /* Animations */
338
- @keyframes gradientMove {
339
  0% { background-position: 0% 50%; }
340
  50% { background-position: 100% 50%; }
341
  100% { background-position: 0% 50%; }
@@ -346,70 +261,35 @@ footer {
346
  100% { transform: translateY(-100%); }
347
  }
348
 
349
- @keyframes scanline {
350
- 0% { transform: translateX(-150%) scaleX(0.5); opacity: 0; }
351
- 50% { transform: translateX(-50%) scaleX(1); opacity: 1; }
352
- 100% { transform: translateX(50%) scaleX(0.5); opacity: 0; }
353
  }
354
 
355
- @keyframes gradientFlow {
356
  0% { background-position: 0% 50%; }
357
  50% { background-position: 100% 50%; }
358
  100% { background-position: 0% 50%; }
359
  }
360
 
361
- @keyframes textGlow {
362
- 0% { opacity: 0.3; transform: scale(1); }
363
- 50% { opacity: 0.5; transform: scale(1.02); }
364
- 100% { opacity: 0.3; transform: scale(1); }
365
  }
366
 
367
- @keyframes borderGlow {
368
- 0% { opacity: 0.5; }
369
- 50% { opacity: 1; }
370
- 100% { opacity: 0.5; }
371
  }
372
 
373
- @keyframes rotateGradient {
374
- 0% { transform: rotate(0deg); }
375
- 100% { transform: rotate(360deg); }
 
376
  }
377
-
378
- @keyframes fadeScale {
379
- 0% { opacity: 0; transform: scale(0.95); }
380
- 100% { opacity: 1; transform: scale(1); }
381
- }
382
-
383
- @keyframes slideUp {
384
- 0% { opacity: 0; transform: translateY(20px); }
385
- 100% { opacity: 1; transform: translateY(0); }
386
- }
387
-
388
- @keyframes floatIn {
389
- 0% { opacity: 0; transform: translateY(20px); }
390
- 100% { opacity: 1; transform: translateY(0); }
391
- }
392
-
393
- @keyframes fadeInUp {
394
- 0% { opacity: 0; transform: translateY(10px); }
395
- 100% { opacity: 1; transform: translateY(0); }
396
- }
397
-
398
- @keyframes heartbeat {
399
- 0% { transform: scale(1); }
400
- 10% { transform: scale(1.2); }
401
- 20% { transform: scale(0.9); }
402
- 30% { transform: scale(1.1); }
403
- 40% { transform: scale(0.95); }
404
- 50% { transform: scale(1); }
405
- 100% { transform: scale(1); }
406
- }
407
-
408
- @keyframes sparkle {
409
- 0% { transform: scale(0); opacity: 0; }
410
- 50% { transform: scale(1.2); opacity: 1; }
411
- 100% { transform: scale(0); opacity: 0; }
412
- }
413
  """
414
  # Start the API server
415
  def start_api_server():
@@ -521,11 +401,11 @@ import atexit
521
  # [Previous code until the interface definition remains the same]
522
 
523
  # Update the Gradio interface with fixed button handling
524
- with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as iface:
525
  # Title section
526
  gr.HTML("""
527
  <div class="treat-title">
528
- <h1 data-text="TREAT">TREAT</h1>
529
  <p>Trigger Recognition for Enjoyable and Appropriate Television</p>
530
  </div>
531
  """)
 
28
  }
29
 
30
  .gradio-container {
31
+ background: #0a0a0a !important;
32
  color: #fff !important;
33
  min-height: 100vh;
34
  position: relative;
35
  overflow: hidden;
36
  }
37
 
38
+ /* Subtle Animated Background */
39
  .gradio-container::before {
40
  content: '';
41
  position: fixed;
 
45
  bottom: 0;
46
  background:
47
  linear-gradient(125deg,
48
+ #0a0a0a 0%,
49
+ rgba(218, 165, 32, 0.03) 30%,
50
+ rgba(218, 165, 32, 0.05) 50%,
51
+ rgba(218, 165, 32, 0.03) 70%,
52
+ #0a0a0a 100%);
53
+ animation: subtleGradient 20s ease infinite;
54
  background-size: 400% 400%;
55
  z-index: 0;
56
  }
57
 
58
+ /* Premium Particles Effect */
59
  .gradio-container::after {
60
  content: '';
61
  position: fixed;
 
63
  left: 0;
64
  width: 100%;
65
  height: 100%;
66
+ background: radial-gradient(circle at center, transparent 0%, #0a0a0a 70%),
67
+ url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='50' cy='50' r='1' fill='rgba(218, 165, 32, 0.08)'/%3E%3C/svg%3E");
68
+ opacity: 0.3;
69
+ animation: floatingParticles 30s linear infinite;
70
  z-index: 1;
71
  }
72
 
73
+ /* Luxurious Header */
74
  .treat-title {
75
  text-align: center;
76
  padding: 3rem 1rem;
 
78
  overflow: hidden;
79
  z-index: 2;
80
  background: linear-gradient(180deg,
81
+ rgba(218, 165, 32, 0.05),
82
  transparent 70%);
83
  }
84
 
 
87
  position: absolute;
88
  top: 0;
89
  left: 50%;
90
+ width: 60%;
91
  height: 1px;
92
  background: linear-gradient(90deg,
93
  transparent,
94
+ rgba(218, 165, 32, 0.3),
95
  transparent);
96
  transform: translateX(-50%);
97
+ animation: luxuryScan 5s ease-in-out infinite;
98
  }
99
 
100
  .treat-title h1 {
101
  font-size: 4.5rem;
102
  font-weight: 800;
103
  background: linear-gradient(135deg,
104
+ #996515 0%,
105
+ #DAA520 25%,
106
+ #FFD700 50%,
107
+ #DAA520 75%,
108
+ #996515 100%);
109
  background-size: 200% auto;
110
  -webkit-background-clip: text;
111
  -webkit-text-fill-color: transparent;
112
  margin-bottom: 0.5rem;
113
  letter-spacing: -0.05em;
114
+ animation: goldenFlow 8s ease infinite;
115
  position: relative;
116
  }
117
 
 
124
  height: 100%;
125
  background: linear-gradient(135deg,
126
  transparent 0%,
127
+ rgba(218, 165, 32, 0.4) 50%,
128
  transparent 100%);
129
  background-size: 200% auto;
130
  -webkit-background-clip: text;
131
  -webkit-text-fill-color: transparent;
132
  opacity: 0.5;
133
+ animation: premiumGlow 4s ease-in-out infinite;
 
 
 
 
 
 
 
 
 
134
  }
135
 
136
+ /* Premium Content Areas */
137
  .tabs {
138
+ background: rgba(10, 10, 10, 0.95);
139
+ border: 1px solid rgba(218, 165, 32, 0.15);
140
  border-radius: 16px;
141
  padding: 1rem;
142
  margin: 0 1rem 2rem 1rem;
143
  position: relative;
144
  z-index: 2;
145
  backdrop-filter: blur(10px);
146
+ box-shadow: 0 0 30px rgba(218, 165, 32, 0.05);
 
147
  }
148
 
149
  .tabs::before {
 
154
  right: -1px;
155
  bottom: -1px;
156
  background: linear-gradient(45deg,
157
+ rgba(218, 165, 32, 0.1),
158
  transparent,
159
+ rgba(218, 165, 32, 0.1));
160
  border-radius: 16px;
161
  z-index: -1;
162
+ animation: luxuryBorder 6s ease-in-out infinite;
163
  }
164
 
 
165
  .content-area {
166
+ background: rgba(10, 10, 10, 0.95) !important;
167
+ border: 1px solid rgba(218, 165, 32, 0.15) !important;
168
  border-radius: 12px !important;
169
  padding: 1.5rem !important;
170
  backdrop-filter: blur(10px);
171
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  }
173
 
174
+ /* Premium Input Fields */
175
  .gradio-textbox textarea {
176
+ background: rgba(10, 10, 10, 0.9) !important;
177
+ border: 1px solid rgba(218, 165, 32, 0.2) !important;
178
  border-radius: 8px !important;
179
  color: rgba(255, 255, 255, 0.9) !important;
180
  font-size: 0.95rem !important;
181
  line-height: 1.6 !important;
182
  padding: 1rem !important;
 
 
 
183
  }
184
 
185
  .gradio-textbox textarea:focus {
186
+ border-color: #DAA520 !important;
187
+ box-shadow: 0 0 20px rgba(218, 165, 32, 0.1) !important;
188
+ background: rgba(10, 10, 10, 0.95) !important;
189
  transform: translateY(-2px);
190
  }
191
 
192
+ /* Luxury Buttons */
193
  .gradio-button {
194
  background: linear-gradient(45deg,
195
+ #996515,
196
+ #DAA520,
197
+ #FFD700,
198
+ #DAA520) !important;
199
  background-size: 200% auto !important;
200
  border: none !important;
201
  border-radius: 8px !important;
202
+ color: #0a0a0a !important;
203
  font-weight: 600 !important;
204
  font-size: 0.95rem !important;
205
  padding: 0.75rem 1.5rem !important;
 
207
  position: relative;
208
  overflow: hidden;
209
  transition: all 0.3s ease !important;
210
+ animation: goldenFlow 4s ease infinite;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  }
212
 
213
  .gradio-button:hover {
214
  transform: translateY(-2px);
215
+ box-shadow: 0 5px 20px rgba(218, 165, 32, 0.2) !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  }
217
 
218
+ /* Premium Footer */
219
  .footer {
220
  text-align: center;
221
  padding: 2rem 0;
 
226
  }
227
 
228
  .footer p {
229
+ color: rgba(218, 165, 32, 0.8);
 
 
 
 
230
  }
231
 
232
  .footer .heart {
233
+ color: #DAA520;
234
+ animation: luxuryPulse 2s ease infinite;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
  }
236
 
237
  .footer .name {
238
+ color: #DAA520;
239
  text-decoration: none;
 
240
  transition: all 0.3s ease;
241
  padding: 0 4px;
242
  }
243
 
244
  .footer .name:hover {
245
+ color: #FFD700;
246
  }
247
 
248
  footer {
249
  visibility: hidden;
250
  }
251
 
252
+ /* Premium Animations */
253
+ @keyframes subtleGradient {
254
  0% { background-position: 0% 50%; }
255
  50% { background-position: 100% 50%; }
256
  100% { background-position: 0% 50%; }
 
261
  100% { transform: translateY(-100%); }
262
  }
263
 
264
+ @keyframes luxuryScan {
265
+ 0% { transform: translateX(-150%) scaleX(0.3); opacity: 0; }
266
+ 50% { transform: translateX(-50%) scaleX(1); opacity: 0.5; }
267
+ 100% { transform: translateX(50%) scaleX(0.3); opacity: 0; }
268
  }
269
 
270
+ @keyframes goldenFlow {
271
  0% { background-position: 0% 50%; }
272
  50% { background-position: 100% 50%; }
273
  100% { background-position: 0% 50%; }
274
  }
275
 
276
+ @keyframes premiumGlow {
277
+ 0% { opacity: 0.2; transform: scale(1); }
278
+ 50% { opacity: 0.4; transform: scale(1.01); }
279
+ 100% { opacity: 0.2; transform: scale(1); }
280
  }
281
 
282
+ @keyframes luxuryBorder {
283
+ 0% { opacity: 0.3; }
284
+ 50% { opacity: 0.7; }
285
+ 100% { opacity: 0.3; }
286
  }
287
 
288
+ @keyframes luxuryPulse {
289
+ 0% { transform: scale(1); opacity: 0.8; }
290
+ 50% { transform: scale(1.1); opacity: 1; }
291
+ 100% { transform: scale(1); opacity: 0.8; }
292
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  """
294
  # Start the API server
295
  def start_api_server():
 
401
  # [Previous code until the interface definition remains the same]
402
 
403
  # Update the Gradio interface with fixed button handling
404
+ with gr.Blocks(css=custom_css, theme=gr.themes.Monochrome()) as iface:
405
  # Title section
406
  gr.HTML("""
407
  <div class="treat-title">
408
+ <h1 data-text="TREAT R1">TREAT R1</h1>
409
  <p>Trigger Recognition for Enjoyable and Appropriate Television</p>
410
  </div>
411
  """)