Subham9126 commited on
Commit
4a4d1fc
·
verified ·
1 Parent(s): 9274027

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +682 -152
style.css CHANGED
@@ -1,159 +1,689 @@
1
- document.addEventListener('DOMContentLoaded', () => {
2
- // DOM Elements
3
- const videoList = document.getElementById('videoList');
4
- const videoPlayer = document.getElementById('videoPlayer');
5
- const currentVideoTitle = document.getElementById('currentVideoTitle');
6
- const noVideoMessage = document.getElementById('noVideoMessage');
7
- const searchInput = document.getElementById('searchInput');
8
- const searchButton = document.getElementById('searchButton');
9
- const fullscreenBtn = document.getElementById('fullscreenBtn');
 
 
 
 
 
 
10
 
11
- // State
12
- let videos = [];
13
- let currentVideoIndex = -1;
 
 
14
 
15
- // Fetch video data from JSON file
16
- async function fetchVideos() {
17
- try {
18
- const response = await fetch('database.json');
19
- if (!response.ok) {
20
- throw new Error('Failed to load video database');
21
- }
22
-
23
- videos = await response.json();
24
- renderVideoList(videos);
25
- } catch (error) {
26
- console.error('Error loading videos:', error);
27
- videoList.innerHTML = `
28
- <div class="error-message">
29
- <p>Failed to load videos. Please try again later.</p>
30
- </div>
31
- `;
32
- }
33
- }
34
 
35
- // Render video list
36
- function renderVideoList(videosToRender) {
37
- // Clear loading state
38
- videoList.innerHTML = '';
39
-
40
- if (videosToRender.length === 0) {
41
- videoList.innerHTML = `
42
- <div class="error-message">
43
- <p>No videos found</p>
44
- </div>
45
- `;
46
- return;
47
- }
48
-
49
- // Create video list items
50
- videosToRender.forEach((video, index) => {
51
- const videoItem = document.createElement('div');
52
- videoItem.className = 'video-item';
53
- videoItem.innerHTML = `
54
- <h3>${video.title}</h3>
55
- `;
56
-
57
- videoItem.addEventListener('click', () => {
58
- playVideo(index);
59
- });
60
-
61
- videoList.appendChild(videoItem);
62
- });
63
- }
64
 
65
- // Play selected video
66
- function playVideo(index) {
67
- if (index < 0 || index >= videos.length) return;
68
-
69
- // Update UI
70
- const videoItems = document.querySelectorAll('.video-item');
71
- videoItems.forEach(item => item.classList.remove('active'));
72
- videoItems[index].classList.add('active');
73
-
74
- // Update video source and title
75
- const video = videos[index];
76
- videoPlayer.src = video.url;
77
- currentVideoTitle.textContent = video.title;
78
-
79
- // Show video player and hide placeholder
80
- noVideoMessage.style.display = 'none';
81
- videoPlayer.style.display = 'block';
82
-
83
- // Play video
84
- videoPlayer.load();
85
- videoPlayer.play()
86
- .catch(error => {
87
- console.error('Failed to play video:', error);
88
- // Handle formats that might not be supported
89
- if (video.url.toLowerCase().endsWith('.mkv')) {
90
- alert('MKV format may not be supported in your browser. Consider using MP4 files for better compatibility.');
91
- }
92
- });
93
-
94
- currentVideoIndex = index;
95
- }
96
 
97
- // Search functionality
98
- function searchVideos() {
99
- const searchTerm = searchInput.value.toLowerCase().trim();
100
-
101
- if (!searchTerm) {
102
- renderVideoList(videos);
103
- return;
104
- }
105
-
106
- const filteredVideos = videos.filter(video =>
107
- video.title.toLowerCase().includes(searchTerm)
108
- );
109
-
110
- renderVideoList(filteredVideos);
111
- }
112
 
113
- // Toggle fullscreen
114
- function toggleFullscreen() {
115
- if (!document.fullscreenElement) {
116
- if (videoPlayer.requestFullscreen) {
117
- videoPlayer.requestFullscreen();
118
- } else if (videoPlayer.webkitRequestFullscreen) { /* Safari */
119
- videoPlayer.webkitRequestFullscreen();
120
- } else if (videoPlayer.msRequestFullscreen) { /* IE11 */
121
- videoPlayer.msRequestFullscreen();
122
- }
123
- } else {
124
- if (document.exitFullscreen) {
125
- document.exitFullscreen();
126
- } else if (document.webkitExitFullscreen) { /* Safari */
127
- document.webkitExitFullscreen();
128
- } else if (document.msExitFullscreen) { /* IE11 */
129
- document.msExitFullscreen();
130
- }
131
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  }
133
-
134
- // Handle video ended event
135
- videoPlayer.addEventListener('ended', () => {
136
- // Optionally auto-play next video
137
- if (currentVideoIndex < videos.length - 1) {
138
- playVideo(currentVideoIndex + 1);
139
- }
140
- });
141
-
142
- // Handle video error
143
- videoPlayer.addEventListener('error', () => {
144
- console.error('Video error:', videoPlayer.error);
145
- alert('Error playing video. This could be due to format incompatibility or access issues.');
146
- });
147
-
148
- // Event listeners
149
- searchButton.addEventListener('click', searchVideos);
150
- searchInput.addEventListener('keyup', (e) => {
151
- if (e.key === 'Enter') {
152
- searchVideos();
153
- }
154
- });
155
- fullscreenBtn.addEventListener('click', toggleFullscreen);
156
-
157
- // Initial load
158
- fetchVideos();
159
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Base Styles & Variables */
2
+ :root {
3
+ /* Colors - Material Design inspired */
4
+ --primary-color: #1976d2;
5
+ --primary-light: #42a5f5;
6
+ --primary-dark: #0d47a1;
7
+ --secondary-color: #f50057;
8
+ --surface-color: #ffffff;
9
+ --background-color: #f5f7fa;
10
+ --text-primary: #212121;
11
+ --text-secondary: #757575;
12
+ --divider-color: #e0e0e0;
13
+ --error-color: #f44336;
14
+ --success-color: #4caf50;
15
+ --warning-color: #ff9800;
16
 
17
+ /* Elevation/Shadow */
18
+ --shadow-1: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
19
+ --shadow-2: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
20
+ --shadow-3: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
21
+ --shadow-4: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
22
 
23
+ /* Border Radius */
24
+ --border-radius-sm: 4px;
25
+ --border-radius-md: 8px;
26
+ --border-radius-lg: 16px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
+ /* Spacing */
29
+ --spacing-xs: 4px;
30
+ --spacing-sm: 8px;
31
+ --spacing-md: 16px;
32
+ --spacing-lg: 24px;
33
+ --spacing-xl: 32px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
+ /* Animation */
36
+ --transition-fast: 0.2s;
37
+ --transition-regular: 0.3s;
38
+ --transition-slow: 0.5s;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
+ /* Layout */
41
+ --header-height: 64px;
42
+ --footer-height: 50px;
43
+ --sidebar-width: 240px;
 
 
 
 
 
 
 
 
 
 
 
44
 
45
+ /* Font Sizes */
46
+ --font-xs: 12px;
47
+ --font-sm: 14px;
48
+ --font-md: 16px;
49
+ --font-lg: 18px;
50
+ --font-xl: 20px;
51
+ --font-xxl: 24px;
52
+ }
53
+
54
+ /* Base Reset */
55
+ *, *::before, *::after {
56
+ box-sizing: border-box;
57
+ margin: 0;
58
+ padding: 0;
59
+ }
60
+
61
+ body {
62
+ font-family: 'Roboto', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
63
+ line-height: 1.6;
64
+ background-color: var(--background-color);
65
+ color: var(--text-primary);
66
+ min-height: 100vh;
67
+ margin: 0;
68
+ padding: 0;
69
+ overflow-x: hidden;
70
+ }
71
+
72
+ /* App Container */
73
+ .app-container {
74
+ display: flex;
75
+ flex-direction: column;
76
+ min-height: 100vh;
77
+ }
78
+
79
+ /* Header Styles */
80
+ .app-header {
81
+ background-color: var(--surface-color);
82
+ box-shadow: var(--shadow-1);
83
+ position: sticky;
84
+ top: 0;
85
+ z-index: 100;
86
+ height: var(--header-height);
87
+ display: flex;
88
+ align-items: center;
89
+ }
90
+
91
+ .header-content {
92
+ width: 100%;
93
+ max-width: 1440px;
94
+ margin: 0 auto;
95
+ padding: 0 var(--spacing-lg);
96
+ display: flex;
97
+ justify-content: space-between;
98
+ align-items: center;
99
+ flex-wrap: wrap;
100
+ }
101
+
102
+ .logo-container {
103
+ display: flex;
104
+ align-items: center;
105
+ }
106
+
107
+ .logo-icon {
108
+ color: var(--primary-color);
109
+ font-size: var(--font-xl);
110
+ margin-right: var(--spacing-sm);
111
+ }
112
+
113
+ .app-title {
114
+ font-size: var(--font-xl);
115
+ font-weight: 500;
116
+ color: var(--primary-dark);
117
+ white-space: nowrap;
118
+ }
119
+
120
+ .search-wrapper {
121
+ flex-grow: 1;
122
+ max-width: 500px;
123
+ margin-left: var(--spacing-lg);
124
+ }
125
+
126
+ .search-container {
127
+ position: relative;
128
+ width: 100%;
129
+ display: flex;
130
+ align-items: center;
131
+ background-color: rgba(0, 0, 0, 0.04);
132
+ border-radius: var(--border-radius-md);
133
+ padding: var(--spacing-xs) var(--spacing-md);
134
+ transition: background-color var(--transition-fast);
135
+ }
136
+
137
+ .search-container:focus-within {
138
+ background-color: rgba(0, 0, 0, 0.08);
139
+ box-shadow: 0 0 0 2px var(--primary-light);
140
+ }
141
+
142
+ .search-icon {
143
+ color: var(--text-secondary);
144
+ margin-right: var(--spacing-sm);
145
+ }
146
+
147
+ .search-input {
148
+ flex-grow: 1;
149
+ border: none;
150
+ background: transparent;
151
+ padding: var(--spacing-sm);
152
+ font-size: var(--font-md);
153
+ color: var(--text-primary);
154
+ outline: none;
155
+ }
156
+
157
+ .search-input::placeholder {
158
+ color: var(--text-secondary);
159
+ }
160
+
161
+ .clear-search-btn {
162
+ background: none;
163
+ border: none;
164
+ cursor: pointer;
165
+ color: var(--text-secondary);
166
+ opacity: 0.7;
167
+ transition: opacity var(--transition-fast);
168
+ display: none;
169
+ padding: var(--spacing-xs);
170
+ }
171
+
172
+ .clear-search-btn:hover {
173
+ opacity: 1;
174
+ }
175
+
176
+ /* Main Content */
177
+ .app-main {
178
+ flex: 1;
179
+ padding: var(--spacing-lg);
180
+ max-width: 1440px;
181
+ width: 100%;
182
+ margin: 0 auto;
183
+ }
184
+
185
+ /* Controls Bar */
186
+ .controls-bar {
187
+ display: flex;
188
+ justify-content: space-between;
189
+ align-items: center;
190
+ margin-bottom: var(--spacing-lg);
191
+ }
192
+
193
+ .result-counter {
194
+ color: var(--text-secondary);
195
+ font-size: var(--font-sm);
196
+ }
197
+
198
+ .view-toggle {
199
+ display: flex;
200
+ gap: var(--spacing-xs);
201
+ }
202
+
203
+ .view-btn {
204
+ background: none;
205
+ border: none;
206
+ padding: var(--spacing-sm);
207
+ border-radius: var(--border-radius-sm);
208
+ cursor: pointer;
209
+ color: var(--text-secondary);
210
+ transition: all var(--transition-fast);
211
+ }
212
+
213
+ .view-btn:hover {
214
+ background-color: rgba(0, 0, 0, 0.04);
215
+ }
216
+
217
+ .view-btn.active {
218
+ background-color: var(--primary-color);
219
+ color: white;
220
+ }
221
+
222
+ /* Loading State */
223
+ .loading-container {
224
+ display: flex;
225
+ flex-direction: column;
226
+ align-items: center;
227
+ justify-content: center;
228
+ padding: var(--spacing-xl) 0;
229
+ color: var(--text-secondary);
230
+ }
231
+
232
+ .loading-spinner {
233
+ border: 4px solid rgba(0, 0, 0, 0.1);
234
+ border-left: 4px solid var(--primary-color);
235
+ border-radius: 50%;
236
+ width: 40px;
237
+ height: 40px;
238
+ animation: spin 1s linear infinite;
239
+ margin-bottom: var(--spacing-md);
240
+ }
241
+
242
+ @keyframes spin {
243
+ 0% { transform: rotate(0deg); }
244
+ 100% { transform: rotate(360deg); }
245
+ }
246
+
247
+ /* Error State */
248
+ .error-container {
249
+ text-align: center;
250
+ padding: var(--spacing-xl) 0;
251
+ color: var(--error-color);
252
+ }
253
+
254
+ .error-container i {
255
+ font-size: 48px;
256
+ margin-bottom: var(--spacing-md);
257
+ }
258
+
259
+ .retry-btn {
260
+ margin-top: var(--spacing-md);
261
+ padding: var(--spacing-sm) var(--spacing-lg);
262
+ background-color: var(--primary-color);
263
+ color: white;
264
+ border: none;
265
+ border-radius: var(--border-radius-sm);
266
+ cursor: pointer;
267
+ font-size: var(--font-md);
268
+ transition: background-color var(--transition-fast);
269
+ }
270
+
271
+ .retry-btn:hover {
272
+ background-color: var(--primary-dark);
273
+ }
274
+
275
+ /* Video Grid */
276
+ .video-grid {
277
+ display: grid;
278
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
279
+ gap: var(--spacing-lg);
280
+ }
281
+
282
+ .video-grid.list-view {
283
+ grid-template-columns: 1fr;
284
+ gap: var(--spacing-md);
285
+ }
286
+
287
+ .video-card {
288
+ background-color: var(--surface-color);
289
+ border-radius: var(--border-radius-md);
290
+ overflow: hidden;
291
+ box-shadow: var(--shadow-1);
292
+ transition: transform var(--transition-fast), box-shadow var(--transition-fast);
293
+ cursor: pointer;
294
+ position: relative;
295
+ }
296
+
297
+ .video-card:hover {
298
+ transform: translateY(-4px);
299
+ box-shadow: var(--shadow-2);
300
+ }
301
+
302
+ .video-card.list-view {
303
+ display: flex;
304
+ align-items: center;
305
+ }
306
+
307
+ .video-thumbnail {
308
+ position: relative;
309
+ width: 100%;
310
+ padding-top: 56.25%; /* 16:9 aspect ratio */
311
+ background-color: #000;
312
+ overflow: hidden;
313
+ }
314
+
315
+ .list-view .video-thumbnail {
316
+ width: 180px;
317
+ min-width: 180px;
318
+ height: 100px;
319
+ padding-top: 0;
320
+ }
321
+
322
+ .thumbnail-placeholder {
323
+ position: absolute;
324
+ top: 0;
325
+ left: 0;
326
+ width: 100%;
327
+ height: 100%;
328
+ background-color: #2c3e50;
329
+ display: flex;
330
+ justify-content: center;
331
+ align-items: center;
332
+ color: rgba(255, 255, 255, 0.7);
333
+ }
334
+
335
+ .play-icon {
336
+ position: absolute;
337
+ top: 50%;
338
+ left: 50%;
339
+ transform: translate(-50%, -50%);
340
+ color: white;
341
+ background-color: rgba(0, 0, 0, 0.6);
342
+ border-radius: 50%;
343
+ width: 50px;
344
+ height: 50px;
345
+ display: flex;
346
+ justify-content: center;
347
+ align-items: center;
348
+ opacity: 0;
349
+ transition: opacity var(--transition-fast);
350
+ }
351
+
352
+ .video-card:hover .play-icon {
353
+ opacity: 1;
354
+ }
355
+
356
+ .video-info {
357
+ padding: var(--spacing-md);
358
+ }
359
+
360
+ .list-view .video-info {
361
+ flex: 1;
362
+ }
363
+
364
+ .video-title {
365
+ font-size: var(--font-md);
366
+ font-weight: 500;
367
+ margin-bottom: var(--spacing-xs);
368
+ color: var(--text-primary);
369
+ /* Truncate long titles */
370
+ display: -webkit-box;
371
+ -webkit-line-clamp: 2;
372
+ -webkit-box-orient: vertical;
373
+ overflow: hidden;
374
+ line-height: 1.4;
375
+ max-height: 2.8em;
376
+ }
377
+
378
+ .list-view .video-title {
379
+ -webkit-line-clamp: 1;
380
+ font-size: var(--font-lg);
381
+ }
382
+
383
+ /* Pagination */
384
+ .pagination-container {
385
+ margin-top: var(--spacing-xl);
386
+ display: flex;
387
+ justify-content: center;
388
+ }
389
+
390
+ .pagination {
391
+ display: flex;
392
+ gap: var(--spacing-xs);
393
+ }
394
+
395
+ .page-btn {
396
+ min-width: 36px;
397
+ height: 36px;
398
+ display: flex;
399
+ justify-content: center;
400
+ align-items: center;
401
+ background-color: var(--surface-color);
402
+ border: 1px solid var(--divider-color);
403
+ border-radius: var(--border-radius-sm);
404
+ cursor: pointer;
405
+ transition: all var(--transition-fast);
406
+ font-size: var(--font-sm);
407
+ color: var(--text-primary);
408
+ }
409
+
410
+ .page-btn:hover {
411
+ background-color: rgba(0, 0, 0, 0.04);
412
+ }
413
+
414
+ .page-btn.active {
415
+ background-color: var(--primary-color);
416
+ border-color: var(--primary-color);
417
+ color: white;
418
+ }
419
+
420
+ .page-btn.disabled {
421
+ opacity: 0.5;
422
+ cursor: not-allowed;
423
+ }
424
+
425
+ /* Modal */
426
+ .modal {
427
+ display: none;
428
+ position: fixed;
429
+ top: 0;
430
+ left: 0;
431
+ width: 100%;
432
+ height: 100%;
433
+ background-color: rgba(0, 0, 0, 0.8);
434
+ z-index: 1000;
435
+ overflow: hidden;
436
+ }
437
+
438
+ .modal-content {
439
+ position: relative;
440
+ background-color: var(--surface-color);
441
+ width: 90%;
442
+ max-width: 900px;
443
+ max-height: 90vh;
444
+ margin: 5vh auto;
445
+ border-radius: var(--border-radius-lg);
446
+ overflow: hidden;
447
+ display: flex;
448
+ flex-direction: column;
449
+ box-shadow: var(--shadow-4);
450
+ animation: modalFadeIn 0.3s ease;
451
+ }
452
+
453
+ @keyframes modalFadeIn {
454
+ from { opacity: 0; transform: translateY(20px); }
455
+ to { opacity: 1; transform: translateY(0); }
456
+ }
457
+
458
+ .modal-header {
459
+ display: flex;
460
+ justify-content: space-between;
461
+ align-items: center;
462
+ padding: var(--spacing-md) var(--spacing-lg);
463
+ border-bottom: 1px solid var(--divider-color);
464
+ }
465
+
466
+ .modal-header h2 {
467
+ font-size: var(--font-lg);
468
+ font-weight: 500;
469
+ color: var(--text-primary);
470
+ }
471
+
472
+ .close-button {
473
+ background: none;
474
+ border: none;
475
+ font-size: var(--font-xl);
476
+ color: var(--text-secondary);
477
+ cursor: pointer;
478
+ opacity: 0.7;
479
+ transition: opacity var(--transition-fast);
480
+ display: flex;
481
+ padding: var(--spacing-xs);
482
+ border-radius: 50%;
483
+ }
484
+
485
+ .close-button:hover {
486
+ opacity: 1;
487
+ background-color: rgba(0, 0, 0, 0.04);
488
+ }
489
+
490
+ .modal-body {
491
+ padding: var(--spacing-md);
492
+ flex: 1;
493
+ overflow-y: auto;
494
+ }
495
+
496
+ .player-container {
497
+ width: 100%;
498
+ border-radius: var(--border-radius-md);
499
+ overflow: hidden;
500
+ background-color: #000;
501
+ aspect-ratio: 16 / 9;
502
+ }
503
+
504
+ /* Plyr Customization */
505
+ .plyr--full-ui input[type=range] {
506
+ color: var(--primary-color);
507
+ }
508
+
509
+ .plyr__control--overlaid {
510
+ background: var(--primary-color);
511
+ }
512
+
513
+ .plyr--video .plyr__control.plyr__tab-focus,
514
+ .plyr--video .plyr__control:hover,
515
+ .plyr--video .plyr__control[aria-expanded=true] {
516
+ background: var(--primary-dark);
517
+ }
518
+
519
+ .plyr__control.plyr__tab-focus {
520
+ box-shadow: 0 0 0 5px rgba(25, 118, 210, 0.5);
521
+ }
522
+
523
+ .plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before {
524
+ background: var(--primary-color);
525
+ }
526
+
527
+ /* Player Help */
528
+ .player-help {
529
+ display: flex;
530
+ justify-content: center;
531
+ gap: var(--spacing-lg);
532
+ margin-top: var(--spacing-md);
533
+ padding: var(--spacing-sm);
534
+ background-color: rgba(0, 0, 0, 0.03);
535
+ border-radius: var(--border-radius-md);
536
+ flex-wrap: wrap;
537
+ }
538
+
539
+ .help-item {
540
+ display: flex;
541
+ align-items: center;
542
+ color: var(--text-secondary);
543
+ font-size: var(--font-sm);
544
+ }
545
+
546
+ .help-item i {
547
+ margin-right: var(--spacing-xs);
548
+ }
549
+
550
+ /* Toast Messages */
551
+ .toast-container {
552
+ position: fixed;
553
+ bottom: 20px;
554
+ right: 20px;
555
+ z-index: 1000;
556
+ display: flex;
557
+ flex-direction: column;
558
+ gap: var(--spacing-sm);
559
+ }
560
+
561
+ .toast {
562
+ padding: var(--spacing-md) var(--spacing-lg);
563
+ border-radius: var(--border-radius-md);
564
+ background-color: var(--surface-color);
565
+ color: var(--text-primary);
566
+ box-shadow: var(--shadow-2);
567
+ min-width: 250px;
568
+ max-width: 350px;
569
+ display: flex;
570
+ justify-content: space-between;
571
+ align-items: center;
572
+ transform: translateX(100%);
573
+ animation: slideIn 0.3s forwards, fadeOut 0.3s 2.7s forwards;
574
+ }
575
+
576
+ .toast.success {
577
+ border-left: 4px solid var(--success-color);
578
+ }
579
+
580
+ .toast.error {
581
+ border-left: 4px solid var(--error-color);
582
+ }
583
+
584
+ .toast.info {
585
+ border-left: 4px solid var(--primary-color);
586
+ }
587
+
588
+ .toast.warning {
589
+ border-left: 4px solid var(--warning-color);
590
+ }
591
+
592
+ @keyframes slideIn {
593
+ 100% { transform: translateX(0); }
594
+ }
595
+
596
+ @keyframes fadeOut {
597
+ 100% { opacity: 0; }
598
+ }
599
+
600
+ /* Footer */
601
+ .app-footer {
602
+ background-color: var(--surface-color);
603
+ color: var(--text-secondary);
604
+ text-align: center;
605
+ padding: var(--spacing-md);
606
+ margin-top: var(--spacing-xl);
607
+ box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.1);
608
+ }
609
+
610
+ /* Responsive Adjustments */
611
+ @media (max-width: 768px) {
612
+ .header-content {
613
+ flex-direction: column;
614
+ align-items: stretch;
615
+ padding: var(--spacing-sm);
616
+ height: auto;
617
  }
618
+
619
+ .app-header {
620
+ height: auto;
621
+ padding: var(--spacing-sm) 0;
622
+ }
623
+
624
+ .logo-container {
625
+ margin-bottom: var(--spacing-sm);
626
+ justify-content: center;
627
+ }
628
+
629
+ .search-wrapper {
630
+ margin-left: 0;
631
+ max-width: none;
632
+ }
633
+
634
+ .app-main {
635
+ padding: var(--spacing-md);
636
+ }
637
+
638
+ .video-grid {
639
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
640
+ gap: var(--spacing-md);
641
+ }
642
+
643
+ .list-view .video-thumbnail {
644
+ width: 120px;
645
+ min-width: 120px;
646
+ height: 68px;
647
+ }
648
+
649
+ .modal-content {
650
+ width: 95%;
651
+ margin: 2.5vh auto;
652
+ }
653
+
654
+ .player-help {
655
+ gap: var(--spacing-md);
656
+ }
657
+
658
+ .help-item {
659
+ font-size: 10px;
660
+ }
661
+ }
662
+
663
+ @media (max-width: 480px) {
664
+ .video-grid {
665
+ grid-template-columns: 1fr;
666
+ }
667
+
668
+ .list-view .video-thumbnail {
669
+ width: 100px;
670
+ min-width: 100px;
671
+ height: 56px;
672
+ }
673
+
674
+ .player-help {
675
+ flex-direction: column;
676
+ align-items: flex-start;
677
+ gap: var(--spacing-xs);
678
+ }
679
+
680
+ .pagination {
681
+ gap: 2px;
682
+ }
683
+
684
+ .page-btn {
685
+ min-width: 32px;
686
+ height: 32px;
687
+ font-size: 12px;
688
+ }
689
+ }