Yash goyal commited on
Commit
0800130
·
verified ·
1 Parent(s): b0e885a

Update static/form-styles.css

Browse files
Files changed (1) hide show
  1. static/form-styles.css +315 -317
static/form-styles.css CHANGED
@@ -1,114 +1,131 @@
1
- /* Global Styles */
 
 
2
  :root {
3
- --primary-color: #7e54ff;
4
- --secondary-color: #6c43ff;
5
- --accent-color: #ff54b1;
6
- --background-color: #0a0a14;
7
- --dark-color: #050510;
8
- --light-color: #151525;
9
- --gray-color: #1a1a2a;
10
- --text-color: #e0e0e0;
11
- --border-color: #333333;
12
- --success-color: #4caf50;
13
- --error-color: #f44336;
14
- }
15
 
16
- * {
17
- margin: 0;
18
- padding: 0;
19
- box-sizing: border-box;
20
- }
 
 
 
21
 
22
- .custom-cursor, .custom-cursor * {
23
- cursor: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  }
25
 
26
- body:not(.custom-cursor) {
27
- cursor: default; /* Fallback if dna-cursor.svg is missing */
28
- /* cursor: url('/static/dna-cursor.svg'), auto; */
 
 
 
29
  }
30
 
31
  html {
32
- scroll-behavior: smooth;
33
  }
34
 
35
  body {
36
- font-family: 'Roboto', sans-serif;
37
- line-height: 1.6;
38
- color: var(--text-color);
39
- background-color: var(--background-color);
40
- position: relative;
41
- }
42
-
43
- /* Custom Cursor Styles (Fallback if SVGs are unavailable) */
44
- body:not(.custom-cursor) a,
45
- body:not(.custom-cursor) button,
46
- body:not(.custom-cursor) input[type="submit"],
47
- body:not(.custom-cursor) .submit-button,
48
- body:not(.custom-cursor) input[type="checkbox"],
49
- body:not(.custom-cursor) select,
50
- body:not(.custom-cursor) .step-icon,
51
- body:not(.custom-cursor) nav ul li a,
52
- body:not(.custom-cursor) .footer-links ul li a {
53
- cursor: pointer; /* Fallback */
54
- /* cursor: url('/static/dna-cursor-pointer.svg'), pointer; */
55
- }
56
-
57
- /* Custom Cursor Effects (Disabled without JavaScript) */
58
- .cursor-glow,
59
- .cursor-follow {
60
- display: none; /* Requires cursor-effect.js */
61
- }
62
-
63
- /* Preloader */
 
64
  .preloader {
65
- position: fixed;
66
- top: 0;
67
- left: 0;
68
- width: 100%;
69
- height: 100%;
70
- background-color: var(--dark-color);
71
- display: flex;
72
- justify-content: center;
73
- align-items: center;
74
- z-index: 9999;
75
- transition: opacity 0.5s ease, visibility 0.5s ease;
76
  }
77
 
78
  .preloader.hidden {
79
- opacity: 0;
80
- visibility: hidden;
81
  }
82
 
83
  .dna-loader {
84
- position: relative;
85
- width: 100px;
86
- height: 200px;
87
  }
88
 
89
  .dna-loader-strand {
90
- position: absolute;
91
- width: 2px;
92
- height: 200px;
93
- background-color: rgba(0, 80, 180, 0.3);
94
- left: 30px;
95
- transform: rotate(5deg);
96
  }
97
 
98
  .dna-loader-strand:nth-child(2) {
99
- left: 70px;
100
- transform: rotate(-5deg);
101
  }
102
 
103
  .dna-loader-rung {
104
- position: absolute;
105
- width: 40px;
106
- height: 4px;
107
- left: 30px;
108
- background: linear-gradient(to right, #37c7ff, #ff8f30);
109
- box-shadow: 0 0 10px rgba(55, 199, 255, 0.5);
110
- transform-origin: center;
111
- animation: dnaLoaderSpin 1.5s infinite ease-in-out;
 
112
  }
113
 
114
  .dna-loader-rung:nth-child(3) { top: 10%; animation-delay: -0.2s; }
@@ -122,327 +139,308 @@ body:not(.custom-cursor) .footer-links ul li a {
122
  .dna-loader-rung:nth-child(11) { top: 90%; animation-delay: -1.8s; }
123
 
124
  @keyframes dnaLoaderSpin {
125
- 0%, 100% { transform: rotate(0deg) scaleX(1); }
126
- 50% { transform: rotate(180deg) scaleX(0.6); }
127
  }
128
 
129
  .loader-text {
130
- position: absolute;
131
- bottom: -40px;
132
- font-size: 1.2rem;
133
- color: var(--text-color);
134
- font-weight: 300;
135
- letter-spacing: 2px;
136
- animation: loaderTextPulse 1.5s infinite;
 
 
 
137
  }
138
 
139
  @keyframes loaderTextPulse {
140
- 0%, 100% { opacity: 0.7; }
141
- 50% { opacity: 1; }
142
- }
143
-
144
- .preloader-particles {
145
- position: absolute;
146
- width: 100%;
147
- height: 100%;
148
- background-image:
149
- radial-gradient(circle at 20% 30%, rgba(55, 199, 255, 0.4) 0%, transparent 10%),
150
- radial-gradient(circle at 70% 60%, rgba(255, 143, 48, 0.4) 0%, transparent 10%),
151
- radial-gradient(circle at 40% 80%, rgba(55, 199, 255, 0.4) 0%, transparent 10%),
152
- radial-gradient(circle at 80% 40%, rgba(255, 143, 48, 0.4) 0%, transparent 10%);
153
- opacity: 0.2;
154
- filter: blur(2px);
155
- animation: preloaderParticleFloat 5s ease-in-out infinite alternate;
156
  }
157
 
158
- @keyframes preloaderParticleFloat {
159
- 0% { background-position: 0 0, 0 0, 0 0, 0 0; }
160
- 100% { background-position: 20px 20px, -20px 20px, 20px -20px, -20px -20px; }
161
- }
162
-
163
- /* Container */
164
  .container {
165
- max-width: 800px;
166
- margin: 100px auto 20px;
167
- padding: 20px;
168
- background: var(--dark-color);
169
- border-radius: 10px;
170
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
171
- border: 1px solid rgba(126, 84, 255, 0.1);
172
- animation: fadeIn 0.8s ease;
173
  }
174
 
175
  @keyframes fadeIn {
176
- from { opacity: 0; transform: translateY(20px); }
177
- to { opacity: 1; transform: translateY(0); }
178
  }
179
 
180
  header {
181
- text-align: center;
182
- margin-bottom: 20px;
183
  }
184
 
185
  header h1 {
186
- font-size: 2.2rem;
187
- color: var(--primary-color);
188
- text-shadow: 0 0 10px rgba(126, 84, 255, 0.3);
 
 
 
 
189
  }
190
 
191
  header p {
192
- font-size: 1.2em;
193
- color: #aaaaaa;
 
 
194
  }
195
 
196
- /* Form Elements */
197
  .form-group {
198
- margin-bottom: 25px;
199
  }
200
 
201
  label {
202
- display: block;
203
- margin-bottom: 8px;
204
- font-weight: 500;
205
- color: var(--text-color);
 
206
  }
207
 
208
  input[type="text"],
209
  input[type="email"],
210
  input[type="number"],
211
- input[type="file"],
212
  select {
213
- width: 100%;
214
- padding: 12px 15px;
215
- border: 1px solid var(--border-color);
216
- border-radius: 5px;
217
- font-size: 1rem;
218
- transition: all 0.3s ease;
219
- background-color: rgba(42, 42, 42, 0.7);
220
- color: var(--text-color);
 
221
  }
222
 
223
  input[type="text"]:focus,
224
  input[type="email"]:focus,
225
- input[type="number"]:focus,
226
- input[type="file"]:focus,
227
  select:focus {
228
- border-color: var(--primary-color);
229
- box-shadow: 0 0 0 3px rgba(126, 84, 255, 0.2);
230
- outline: none;
231
- background-color: rgba(42, 42, 42, 0.9);
232
- }
233
-
234
- select {
235
- appearance: none;
236
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23e0e0e0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
237
- background-repeat: no-repeat;
238
- background-position: right 10px center;
239
- background-size: 16px;
240
- }
241
-
242
- #submit-btn {
243
- width: 100%;
244
- padding: 15px 40px;
245
- background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
246
- color: #ffffff;
247
- border: none;
248
- border-radius: 50px;
249
- font-size: 1.1rem;
250
- font-weight: 500;
251
- cursor: pointer;
252
- transition: all 0.3s ease;
253
- box-shadow: 0 0 20px rgba(126, 84, 255, 0.5);
254
  }
255
 
256
- #submit-btn:hover {
257
- transform: translateY(-3px);
258
- box-shadow: 0 0 30px rgba(126, 84, 255, 0.7);
259
  }
260
 
261
- /* Result Section */
262
- .result {
263
- margin-top: 20px;
264
- padding: 20px;
265
- background-color: rgba(42, 42, 42, 0.7);
266
- border-radius: 10px;
267
- border: 1px solid rgba(126, 84, 255, 0.1);
268
- animation: slideIn 0.3s ease;
 
 
 
269
  }
270
 
271
- .result h2 {
272
- color: var(--primary-color);
273
- font-size: 1.5rem;
274
- margin-bottom: 15px;
275
- text-shadow: 0 0 10px rgba(126, 84, 255, 0.3);
276
  }
277
 
278
- .result-success, .result-warning, .result-error {
279
- padding: 15px;
280
- border-radius: 5px;
281
- font-size: 1rem;
282
- color: var(--text-color);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  }
284
 
285
- .result-success {
286
- background: rgba(76, 175, 80, 0.1);
287
- border: 1px solid var(--success-color);
288
  }
289
 
290
- .result-warning {
291
- background: rgba(255, 193, 7, 0.1);
292
- border: 1px solid #ffc107;
293
- color: #ffc107;
 
 
 
 
 
294
  }
295
 
296
- .result-error {
297
- background: rgba(244, 67, 54, 0.1);
298
- border: 1px solid var(--error-color);
299
- color: var(--error-color);
 
 
300
  }
301
 
302
- .result p {
303
- margin: 5px 0;
304
- font-size: 1em;
305
  }
306
 
307
- .result p#email-status {
308
- font-weight: 500;
 
309
  }
310
 
311
- .result button,
312
- .result a#download-btn {
313
- display: inline-block;
314
- margin-top: 10px;
315
- padding: 8px 15px;
316
- background-color: var(--success-color);
317
- color: #fff;
318
- border: none;
319
- border-radius: 4px;
320
- text-decoration: none;
321
- font-size: 1em;
322
- cursor: pointer;
323
- transition: background-color 0.3s ease;
324
  }
325
 
326
- .result button:hover,
327
- .result a#download-btn:hover {
328
- background-color: #45a049;
329
  }
330
 
331
- /* Training History */
332
- .training-history {
333
- margin-top: 20px;
334
- padding: 20px;
335
- background-color: rgba(42, 42, 42, 0.7);
336
- border-radius: 10px;
337
- border: 1px solid rgba(126, 84, 255, 0.1);
338
  }
339
 
340
- .training-history h2 {
341
- color: var(--primary-color);
342
- font-size: 1.5rem;
343
- margin-bottom: 15px;
344
- text-shadow: 0 0 10px rgba(126, 84, 255, 0.3);
345
  }
346
 
347
  .training-history img {
348
- max-width: 100%;
349
- height: auto;
350
- border-radius: 4px;
 
351
  }
352
 
353
- /* History Section */
354
- #history-section {
355
- margin-top: 20px;
356
- }
357
-
358
- #history-section h2 {
359
- color: var(--primary-color);
360
- font-size: 1.5rem;
361
- margin-bottom: 15px;
362
- text-shadow: 0 0 10px rgba(126, 84, 255, 0.3);
363
  }
364
 
365
  #history-section input {
366
- width: 70%;
367
- padding: 12px 15px;
368
- border: 1px solid var(--border-color);
369
- border-radius: 5px;
370
- font-size: 1rem;
371
- background-color: rgba(42, 42, 42, 0.7);
372
- color: var(--text-color);
373
- margin-right: 10px;
374
  }
375
 
376
  #history-section button {
377
- padding: 12px 15px;
378
- background-color: var(--primary-color);
379
- color: #fff;
380
- border: none;
381
- border-radius: 5px;
382
- cursor: pointer;
383
- transition: background-color 0.3s ease;
384
- }
385
-
386
- #history-section button:hover {
387
- background-color: var(--secondary-color);
388
  }
389
 
390
  #history-results ul {
391
- list-style: none;
392
- margin-top: 15px;
 
 
393
  }
394
 
395
- #history-results ul li {
396
- padding: 15px;
397
- background-color: var(--light-color);
398
- border: 1px solid var(--border-color);
399
- border-radius: 5px;
400
- margin-bottom: 10px;
 
 
 
401
  }
402
 
403
- #history-results ul li img {
404
- margin-top: 10px;
405
- max-width: 200px;
 
406
  }
407
 
408
- #history-results ul li button {
409
- padding: 5px 10px;
410
- background-color: var(--error-color);
411
- color: #fff;
412
- border: none;
413
- border-radius: 4px;
414
- cursor: pointer;
415
- transition: background-color 0.3s ease;
416
  }
417
 
418
- #history-results ul li button:hover {
419
- background-color: #d32f2f;
 
420
  }
421
 
422
- /* Responsive Styles */
423
- @media (max-width: 600px) {
424
- .container {
425
- margin: 80px auto 10px;
426
- padding: 15px;
427
- }
428
-
429
- header h1 {
430
- font-size: 1.8rem;
431
- }
432
 
433
- input[type="text"],
434
- input[type="email"],
435
- input[type="number"],
436
- input[type="file"],
437
- select {
438
- font-size: 0.9em;
439
- }
440
 
441
- #submit-btn {
442
- font-size: 1em;
443
- }
444
 
445
- #history-section input {
446
- width: 60%;
447
- }
448
- }
 
 
1
+ ```css
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
3
+
4
  :root {
5
+ --font-primary: 'Inter', 'Roboto', sans-serif;
 
 
 
 
 
 
 
 
 
 
 
6
 
7
+ --primary-glow: hsl(257, 100%, 75%);
8
+ --primary: hsl(257, 100%, 65%);
9
+ --primary-dark: hsl(257, 100%, 55%);
10
+ --accent-glow: hsl(327, 100%, 75%);
11
+ --accent: hsl(327, 100%, 65%);
12
+
13
+ --text-primary: hsl(240, 20%, 95%);
14
+ --text-secondary: hsl(240, 10%, 70%);
15
 
16
+ --bg-dark: hsl(240, 25%, 6%);
17
+ --bg-med: hsl(240, 20%, 10%);
18
+ --bg-light: hsl(240, 15%, 15%);
19
+
20
+ --border-color: hsl(240, 10%, 25%);
21
+ --success: hsl(122, 55%, 50%);
22
+ --warning: hsl(45, 100%, 60%);
23
+ --error: hsl(350, 85%, 60%);
24
+
25
+ --container-width: 800px;
26
+ --base-spacing: 1rem;
27
+ --fluid-header-size: clamp(2rem, 5vw, 3rem);
28
+ --fluid-text-size: clamp(0.9rem, 1.5vw, 1rem);
29
+
30
+ --shadow-sm: 0 4px 15px hsla(0, 0%, 0%, 0.2);
31
+ --shadow-md: 0 8px 30px hsla(257, 100%, 65%, 0.2);
32
+ --shadow-lg: 0 10px 40px hsla(257, 100%, 65%, 0.35);
33
+ --border-radius: 8px;
34
+ --transition-fast: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
35
+ --transition-med: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
36
  }
37
 
38
+ *,
39
+ *::before,
40
+ *::after {
41
+ margin: 0;
42
+ padding: 0;
43
+ box-sizing: border-box;
44
  }
45
 
46
  html {
47
+ scroll-behavior: smooth;
48
  }
49
 
50
  body {
51
+ font-family: var(--font-primary);
52
+ line-height: 1.7;
53
+ color: var(--text-primary);
54
+ background: var(--bg-dark);
55
+ overflow-x: hidden;
56
+ -webkit-font-smoothing: antialiased;
57
+ -moz-osx-font-smoothing: grayscale;
58
+ }
59
+
60
+ body::before {
61
+ content: '';
62
+ position: fixed;
63
+ top: 0;
64
+ left: 0;
65
+ width: 100%;
66
+ height: 100%;
67
+ background-image:
68
+ linear-gradient(to right, hsla(257, 100%, 65%, 0.05) 1px, transparent 1px),
69
+ linear-gradient(to bottom, hsla(257, 100%, 65%, 0.05) 1px, transparent 1px);
70
+ background-size: 50px 50px;
71
+ z-index: -1;
72
+ animation: bg-pan 30s linear infinite;
73
+ }
74
+
75
+ @keyframes bg-pan {
76
+ 0% { background-position: 0% 0%; }
77
+ 100% { background-position: 100% 100%; }
78
+ }
79
+
80
  .preloader {
81
+ position: fixed;
82
+ top: 0;
83
+ left: 0;
84
+ width: 100%;
85
+ height: 100%;
86
+ background-color: var(--bg-dark);
87
+ display: grid;
88
+ place-content: center;
89
+ z-index: 9999;
90
+ transition: opacity 0.6s ease, visibility 0.6s ease;
91
+ transition-delay: 0.2s;
92
  }
93
 
94
  .preloader.hidden {
95
+ opacity: 0;
96
+ visibility: hidden;
97
  }
98
 
99
  .dna-loader {
100
+ position: relative;
101
+ width: 100px;
102
+ height: 200px;
103
  }
104
 
105
  .dna-loader-strand {
106
+ position: absolute;
107
+ width: 2px;
108
+ height: 100%;
109
+ background-color: hsla(257, 100%, 65%, 0.3);
110
+ left: 30px;
111
+ transform: rotate(5deg);
112
  }
113
 
114
  .dna-loader-strand:nth-child(2) {
115
+ left: 70px;
116
+ transform: rotate(-5deg);
117
  }
118
 
119
  .dna-loader-rung {
120
+ position: absolute;
121
+ width: 40px;
122
+ height: 4px;
123
+ left: 30px;
124
+ background: linear-gradient(90deg, var(--primary-glow), var(--accent-glow));
125
+ filter: blur(0.5px);
126
+ box-shadow: 0 0 15px var(--primary-glow);
127
+ transform-origin: center;
128
+ animation: dnaLoaderSpin 2s infinite cubic-bezier(0.645, 0.045, 0.355, 1);
129
  }
130
 
131
  .dna-loader-rung:nth-child(3) { top: 10%; animation-delay: -0.2s; }
 
139
  .dna-loader-rung:nth-child(11) { top: 90%; animation-delay: -1.8s; }
140
 
141
  @keyframes dnaLoaderSpin {
142
+ 0%, 100% { transform: rotate(0deg) scaleX(1); }
143
+ 50% { transform: rotate(180deg) scaleX(0.5); }
144
  }
145
 
146
  .loader-text {
147
+ position: absolute;
148
+ bottom: -40px;
149
+ width: 100%;
150
+ text-align: center;
151
+ font-size: 1rem;
152
+ color: var(--text-secondary);
153
+ font-weight: 400;
154
+ letter-spacing: 3px;
155
+ text-transform: uppercase;
156
+ animation: loaderTextPulse 2s infinite;
157
  }
158
 
159
  @keyframes loaderTextPulse {
160
+ 0%, 100% { opacity: 0.6; }
161
+ 50% { opacity: 1; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  }
163
 
 
 
 
 
 
 
164
  .container {
165
+ max-width: var(--container-width);
166
+ margin: clamp(4rem, 10vh, 6rem) auto;
167
+ padding: calc(var(--base-spacing) * 2);
168
+ background: var(--bg-med);
169
+ border-radius: var(--border-radius);
170
+ box-shadow: var(--shadow-lg);
171
+ border: 1px solid var(--border-color);
172
+ animation: fadeIn 0.8s ease-out;
173
  }
174
 
175
  @keyframes fadeIn {
176
+ from { opacity: 0; transform: translateY(30px) scale(0.98); }
177
+ to { opacity: 1; transform: translateY(0) scale(1); }
178
  }
179
 
180
  header {
181
+ text-align: center;
182
+ margin-bottom: calc(var(--base-spacing) * 2.5);
183
  }
184
 
185
  header h1 {
186
+ font-size: var(--fluid-header-size);
187
+ font-weight: 700;
188
+ background: -webkit-linear-gradient(135deg, var(--primary-glow), var(--accent-glow));
189
+ -webkit-background-clip: text;
190
+ -webkit-text-fill-color: transparent;
191
+ text-shadow: 0 0 25px hsla(257, 100%, 65%, 0.2);
192
+ margin-bottom: calc(var(--base-spacing) / 2);
193
  }
194
 
195
  header p {
196
+ font-size: var(--fluid-text-size);
197
+ color: var(--text-secondary);
198
+ max-width: 60ch;
199
+ margin: 0 auto;
200
  }
201
 
 
202
  .form-group {
203
+ margin-bottom: calc(var(--base-spacing) * 1.5);
204
  }
205
 
206
  label {
207
+ display: block;
208
+ margin-bottom: calc(var(--base-spacing) / 2);
209
+ font-weight: 500;
210
+ color: var(--text-secondary);
211
+ font-size: 0.9rem;
212
  }
213
 
214
  input[type="text"],
215
  input[type="email"],
216
  input[type="number"],
 
217
  select {
218
+ width: 100%;
219
+ padding: calc(var(--base-spacing) * 0.9) calc(var(--base-spacing) * 1.2);
220
+ border: 1px solid var(--border-color);
221
+ border-radius: var(--border-radius);
222
+ font-size: var(--fluid-text-size);
223
+ transition: var(--transition-fast);
224
+ background-color: var(--bg-light);
225
+ color: var(--text-primary);
226
+ font-family: inherit;
227
  }
228
 
229
  input[type="text"]:focus,
230
  input[type="email"]:focus,
231
+ input[type-="number"]:focus,
 
232
  select:focus {
233
+ border-color: var(--primary);
234
+ box-shadow: 0 0 0 3px hsla(257, 100%, 65%, 0.25);
235
+ outline: none;
236
+ background-color: var(--bg-med);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  }
238
 
239
+ input[type="file"] {
240
+ display: none;
 
241
  }
242
 
243
+ .file-upload-label {
244
+ display: flex;
245
+ justify-content: center;
246
+ align-items: center;
247
+ width: 100%;
248
+ padding: calc(var(--base-spacing) * 0.9) calc(var(--base-spacing) * 1.2);
249
+ border: 2px dashed var(--border-color);
250
+ border-radius: var(--border-radius);
251
+ cursor: pointer;
252
+ transition: var(--transition-fast);
253
+ color: var(--text-secondary);
254
  }
255
 
256
+ .file-upload-label:hover,
257
+ .file-upload-label.file-selected {
258
+ border-color: var(--primary);
259
+ color: var(--primary-glow);
260
+ background-color: hsla(257, 100%, 65%, 0.05);
261
  }
262
 
263
+ select {
264
+ appearance: none;
265
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23e0e0e0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
266
+ background-repeat: no-repeat;
267
+ background-position: right 15px center;
268
+ background-size: 18px;
269
+ }
270
+
271
+ button,
272
+ .submit-button {
273
+ display: inline-block;
274
+ width: 100%;
275
+ padding: calc(var(--base-spacing) * 1.1) calc(var(--base-spacing) * 2);
276
+ background-image: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
277
+ color: white;
278
+ border: none;
279
+ border-radius: 50px;
280
+ font-size: 1.1rem;
281
+ font-weight: 600;
282
+ cursor: pointer;
283
+ transition: var(--transition-med);
284
+ box-shadow: var(--shadow-md);
285
+ text-align: center;
286
+ text-decoration: none;
287
+ }
288
+
289
+ button:hover,
290
+ .submit-button:hover {
291
+ transform: translateY(-4px) scale(1.02);
292
+ box-shadow: var(--shadow-lg);
293
+ filter: brightness(1.1);
294
+ }
295
+
296
+ button:disabled {
297
+ opacity: 0.5;
298
+ cursor: not-allowed;
299
+ transform: none;
300
+ box-shadow: none;
301
+ filter: none;
302
+ }
303
+
304
+ .result,
305
+ .training-history,
306
+ #history-section {
307
+ margin-top: calc(var(--base-spacing) * 2.5);
308
+ padding: calc(var(--base-spacing) * 1.5);
309
+ background: var(--bg-med);
310
+ border-radius: var(--border-radius);
311
+ border: 1px solid var(--border-color);
312
+ animation: slideIn 0.5s ease-out;
313
  }
314
 
315
+ @keyframes slideIn {
316
+ from { opacity: 0; transform: translateY(15px); }
317
+ to { opacity: 1; transform: translateY(0); }
318
  }
319
 
320
+ .result h2,
321
+ .training-history h2,
322
+ #history-section h2 {
323
+ font-size: 1.5rem;
324
+ font-weight: 600;
325
+ color: var(--text-primary);
326
+ margin-bottom: var(--base-spacing);
327
+ padding-bottom: calc(var(--base-spacing) / 2);
328
+ border-bottom: 1px solid var(--border-color);
329
  }
330
 
331
+ .alert {
332
+ padding: var(--base-spacing);
333
+ border-radius: var(--border-radius);
334
+ font-size: 1rem;
335
+ color: var(--text-primary);
336
+ border: 1px solid transparent;
337
  }
338
 
339
+ .alert-success {
340
+ background: hsla(122, 55%, 50%, 0.1);
341
+ border-color: var(--success);
342
  }
343
 
344
+ .alert-warning {
345
+ background: hsla(45, 100%, 60%, 0.1);
346
+ border-color: var(--warning);
347
  }
348
 
349
+ .alert-error {
350
+ background: hsla(350, 85%, 60%, 0.1);
351
+ border-color: var(--error);
 
 
 
 
 
 
 
 
 
 
352
  }
353
 
354
+ #email-status {
355
+ font-weight: 500;
356
+ margin-top: var(--base-spacing);
357
  }
358
 
359
+ .action-buttons {
360
+ display: flex;
361
+ gap: var(--base-spacing);
362
+ margin-top: calc(var(--base-spacing) * 1.5);
363
+ flex-wrap: wrap;
 
 
364
  }
365
 
366
+ .action-buttons .submit-button {
367
+ width: auto;
368
+ font-size: 0.9rem;
369
+ padding: calc(var(--base-spacing) * 0.7) calc(var(--base-spacing) * 1.5);
 
370
  }
371
 
372
  .training-history img {
373
+ width: 100%;
374
+ height: auto;
375
+ border-radius: var(--border-radius);
376
+ margin-top: var(--base-spacing);
377
  }
378
 
379
+ #history-section .history-controls {
380
+ display: flex;
381
+ gap: var(--base-spacing);
 
 
 
 
 
 
 
382
  }
383
 
384
  #history-section input {
385
+ flex-grow: 1;
 
 
 
 
 
 
 
386
  }
387
 
388
  #history-section button {
389
+ width: auto;
 
 
 
 
 
 
 
 
 
 
390
  }
391
 
392
  #history-results ul {
393
+ list-style: none;
394
+ margin-top: calc(var(--base-spacing) * 1.5);
395
+ display: grid;
396
+ gap: var(--base-spacing);
397
  }
398
 
399
+ #history-results .history-item {
400
+ display: flex;
401
+ gap: var(--base-spacing);
402
+ align-items: center;
403
+ padding: var(--base-spacing);
404
+ background-color: var(--bg-light);
405
+ border: 1px solid var(--border-color);
406
+ border-radius: var(--border-radius);
407
+ transition: var(--transition-fast);
408
  }
409
 
410
+ #history-results .history-item:hover {
411
+ transform: translateY(-3px);
412
+ border-color: var(--primary);
413
+ box-shadow: var(--shadow-sm);
414
  }
415
 
416
+ #history-results .history-item img {
417
+ width: 100px;
418
+ height: 100px;
419
+ object-fit: cover;
420
+ border-radius: var(--border-radius);
 
 
 
421
  }
422
 
423
+ #history-results .history-item .history-details p {
424
+ margin: 0;
425
+ color: var(--text-secondary);
426
  }
427
 
428
+ #history-results .history-item .history-details strong {
429
+ color: var(--text-primary);
430
+ }
 
 
 
 
 
 
 
431
 
432
+ @media (max-width: 768px) {
433
+ .container {
434
+ margin: clamp(2rem, 5vh, 4rem) auto;
435
+ padding: var(--base-spacing);
436
+ }
 
 
437
 
438
+ header h1 {
439
+ font-size: calc(var(--fluid-header-size) * 0.9);
440
+ }
441
 
442
+ #history-section .history-controls {
443
+ flex-direction: column;
444
+ }
445
+ }
446
+ ```