blob: 00d10d6e109c4db2c3d1d1de6b35fd9786a245a8 [file] [log] [blame]
蒋大力35f939b2025-06-08 13:52:07 +08001.app {
2 display: flex;
3 min-height: 100vh;
4 background-color: #f5f7fa;
5}
6
7/* Header */
8.header {
9 position: fixed;
10 top: 0;
11 left: 0;
12 right: 0;
13 height: 60px;
14 background: #fff;
15 border-bottom: 1px solid #e8eaed;
16 display: flex;
17 align-items: center;
18 padding: 0 20px;
19 z-index: 1000;
20 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
21}
22
23.header-left {
24 display: flex;
25 align-items: center;
26 gap: 12px;
27}
28
29.logo {
30 background: #ff4757;
31 color: white;
32 padding: 6px 12px;
33 border-radius: 6px;
34 font-size: 14px;
35 font-weight: bold;
36}
37
38.header-title {
39 font-size: 18px;
40 font-weight: 500;
41 color: #333;
42}
43
44.header-right {
45 margin-left: auto;
46 display: flex;
47 align-items: center;
48 gap: 12px;
49}
50
51.user-info {
52 display: flex;
53 align-items: center;
54 gap: 8px;
55 color: #666;
56 font-size: 14px;
57}
58
59/* Sidebar */
60.sidebar {
61 position: fixed;
62 left: 0;
63 top: 60px;
64 width: 200px;
65 height: calc(100vh - 60px);
66 background: #fff;
67 border-right: 1px solid #e8eaed;
68 overflow-y: auto;
69 z-index: 999;
70}
71
72.publish-btn {
73 margin: 16px;
74 background: #ff4757;
75 color: white;
76 padding: 10px 16px;
77 border-radius: 6px;
78 font-size: 14px;
79 font-weight: 500;
80 text-align: center;
81 transition: background 0.2s;
82}
83
84.publish-btn:hover {
85 background: #ff3742;
86}
87
88.nav-menu {
89 padding: 0;
90 list-style: none;
91}
92
93.nav-item {
94 border-bottom: 1px solid #f0f0f0;
95}
96
97.nav-link {
98 display: flex;
99 align-items: center;
100 padding: 12px 20px;
101 color: #333;
102 font-size: 14px;
103 transition: all 0.2s;
104 gap: 8px;
105}
106
107.nav-link:hover {
108 background: #f8f9fa;
109 color: #ff4757;
110}
111
112.nav-link.active {
113 background: linear-gradient(135deg, #ff4757, #ff6b7a);
114 color: white;
115 font-weight: 500;
116}
117
118.nav-link.active .lucide {
119 color: white;
120}
121
122.nav-submenu {
123 padding-left: 20px;
124 background: #fafafa;
125}
126
127.nav-submenu .nav-link {
128 padding: 8px 20px;
129 font-size: 13px;
130 color: #666;
131}
132
133.nav-submenu .nav-link:hover {
134 color: #ff4757;
135}
136
137/* Main Content */
138.main-content {
139 margin-left: 200px;
140 padding-top: 60px;
141 flex: 1;
142 min-height: 100vh;
143}
144
145.content-wrapper {
146 padding: 20px;
147 max-width: 1200px;
148 margin: 0 auto;
149}
150
151/* Upload Area */
152.upload-tabs {
153 display: flex;
154 gap: 20px;
155 margin-bottom: 30px;
156 border-bottom: 1px solid #e8eaed;
157}
158
159.upload-tab {
160 padding: 12px 0;
161 font-size: 16px;
162 color: #666;
163 cursor: pointer;
164 border-bottom: 2px solid transparent;
165 transition: all 0.2s;
166}
167
168.upload-tab.active {
169 color: #ff4757;
170 border-bottom-color: #ff4757;
171 font-weight: 500;
172}
173
174.upload-area {
175 background: #fff;
176 border-radius: 8px;
177 padding: 80px 40px;
178 text-align: center;
179 border: 2px dashed #ddd;
180 margin-bottom: 40px;
181 transition: all 0.2s;
182 min-height: 300px;
183 display: flex;
184 flex-direction: column;
185 justify-content: center;
186 align-items: center;
187 position: relative;
188}
189
190.upload-area:hover {
191 border-color: #ff4757;
192 background: #fff8f8;
193}
194
195.upload-area.drag-over {
196 border-color: #ff4757;
197 background: #fff0f0;
198 transform: scale(1.02);
199}
200
201.upload-icon {
202 width: 100px;
203 height: 100px;
204 margin: 0 auto 30px;
205 background: #f8f9fa;
206 border-radius: 50%;
207 display: flex;
208 align-items: center;
209 justify-content: center;
210 font-size: 40px;
211 color: #ccc;
212 transition: all 0.3s ease;
213}
214
215.upload-area:hover .upload-icon {
216 background: #ff475710;
217 color: #ff4757;
218 transform: scale(1.1);
219}
220
221.upload-area.drag-over .upload-icon {
222 background: #ff475720;
223 color: #ff4757;
224 transform: scale(1.2);
225}
226
227.upload-title {
228 font-size: 20px;
229 color: #333;
230 margin-bottom: 12px;
231 font-weight: 500;
232}
233
234.upload-subtitle {
235 font-size: 14px;
236 color: #999;
237 margin-bottom: 30px;
238}
239
240.upload-btn {
241 background: #ff4757;
242 color: white;
243 padding: 14px 28px;
244 border-radius: 6px;
245 font-size: 16px;
246 font-weight: 500;
247 transition: background 0.2s;
248 min-width: 120px;
249}
250
251.upload-btn:hover:not(:disabled) {
252 background: #ff3742;
253}
254
255.upload-btn:disabled {
256 background: #ccc;
257 cursor: not-allowed;
258}
259
260.upload-btn.uploading {
261 background: #ff4757;
262 opacity: 0.8;
263}
264
265/* File Preview */
266.file-preview-area {
267 background: #fff;
268 border-radius: 8px;
269 padding: 20px;
270 margin-bottom: 40px;
271 border: 1px solid #e8eaed;
272}
273
274/* Preview Header */
275.preview-header {
276 display: flex;
277 justify-content: space-between;
278 align-items: center;
279 margin-bottom: 16px;
280}
281
282.preview-title {
283 font-size: 16px;
284 color: #333;
285 margin-bottom: 16px;
286 font-weight: 500;
287}
288
289.clear-files-btn {
290 background: #ff4757;
291 color: white;
292 padding: 6px 12px;
293 border-radius: 4px;
294 font-size: 12px;
295 transition: background 0.2s;
296}
297
298.clear-files-btn:hover {
299 background: #ff3742;
300}
301
302.file-grid {
303 display: grid;
304 grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
305 gap: 16px;
306}
307
308.file-item {
309 display: flex;
310 flex-direction: column;
311 align-items: center;
312 padding: 12px;
313 border: 1px solid #f0f0f0;
314 border-radius: 6px;
315 transition: all 0.2s ease;
316 position: relative;
317}
318
319.file-item:hover {
320 border-color: #ff4757;
321 box-shadow: 0 2px 8px rgba(255, 71, 87, 0.1);
322}
323
324.file-item:hover .remove-file-btn {
325 opacity: 1;
326}
327
328.remove-file-btn {
329 position: absolute;
330 top: 4px;
331 right: 4px;
332 background: rgba(255, 71, 87, 0.8);
333 color: white;
334 border-radius: 50%;
335 width: 20px;
336 height: 20px;
337 display: flex;
338 align-items: center;
339 justify-content: center;
340 font-size: 14px;
341 font-weight: bold;
342 opacity: 0;
343 transition: all 0.2s;
344}
345
346.file-thumbnail {
347 width: 80px;
348 height: 80px;
349 border-radius: 6px;
350 overflow: hidden;
351 margin-bottom: 8px;
352 display: flex;
353 align-items: center;
354 justify-content: center;
355 background: #f8f9fa;
356}
357
358.file-thumbnail img {
359 width: 100%;
360 height: 100%;
361 object-fit: cover;
362}
363
364.video-thumbnail {
365 color: #666;
366}
367
368.file-info {
369 text-align: center;
370 width: 100%;
371}
372
373.file-name {
374 font-size: 12px;
375 color: #333;
376 margin-bottom: 4px;
377 font-weight: 500;
378}
379
380.file-size {
381 font-size: 11px;
382 color: #999;
383}
384
385/* Upload Progress */
386.progress-container {
387 margin-top: 20px;
388 width: 100%;
389 max-width: 400px;
390}
391
392.progress-bar {
393 width: 100%;
394 height: 8px;
395 background-color: #f0f0f0;
396 border-radius: 4px;
397 overflow: hidden;
398 margin-bottom: 8px;
399}
400
401.progress-fill {
402 height: 100%;
403 background: linear-gradient(90deg, #ff4757, #ff6b7a);
404 border-radius: 4px;
405 transition: width 0.3s ease;
406 position: relative;
407}
408
409.progress-fill::after {
410 content: '';
411 position: absolute;
412 top: 0;
413 left: 0;
414 right: 0;
415 bottom: 0;
416 background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
417 animation: shimmer 1.5s infinite;
418}
419
420@keyframes shimmer {
421 0% { transform: translateX(-100%); }
422 100% { transform: translateX(100%); }
423}
424
425.progress-text {
426 text-align: center;
427 font-size: 12px;
428 color: #666;
429 font-weight: 500;
430}
431
432/* Upload Info */
433.upload-info {
434 display: flex;
435 gap: 60px;
436 justify-content: center;
437 margin-top: 40px;
438 padding: 20px;
439 opacity: 1;
440 transition: opacity 0.3s ease;
441}
442
443.upload-info.fade-in {
444 animation: fadeIn 0.3s ease-in-out;
445}
446
447@keyframes fadeIn {
448 from {
449 opacity: 0;
450 transform: translateY(10px);
451 }
452 to {
453 opacity: 1;
454 transform: translateY(0);
455 }
456}
457
458.info-item {
459 text-align: center;
460 flex: 1;
461 max-width: 300px;
462}
463
464.info-title {
465 font-size: 16px;
466 color: #333;
467 margin-bottom: 12px;
468 font-weight: 500;
469}
470
471.info-desc {
472 font-size: 13px;
473 color: #666;
474 line-height: 1.6;
475}
476
477/* Page Content Styles */
478.page-content {
479 padding: 40px;
480 background: white;
481 border-radius: 12px;
482 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
483 margin: 20px 0;
484 min-height: 500px;
485}
486
487.page-header {
488 margin-bottom: 40px;
489 padding-bottom: 20px;
490 border-bottom: 1px solid #e8eaed;
491}
492
493.page-title {
494 font-size: 24px;
495 font-weight: 600;
496 color: #333;
497 margin: 0;
498}
499
500.page-body {
501 display: flex;
502 align-items: center;
503 justify-content: center;
504 min-height: 400px;
505}
506
507.placeholder-content {
508 text-align: center;
509 max-width: 400px;
510}
511
512.placeholder-icon {
513 color: #ff4757;
514 margin-bottom: 20px;
515 display: flex;
516 justify-content: center;
517}
518
519.placeholder-title {
520 font-size: 20px;
521 font-weight: 500;
522 color: #333;
523 margin: 0 0 15px 0;
524}
525
526.placeholder-desc {
527 font-size: 14px;
528 color: #666;
529 line-height: 1.6;
530 margin: 0;
531}
532
533/* Responsive */
534@media (max-width: 768px) {
535 .sidebar {
536 transform: translateX(-100%);
537 transition: transform 0.3s;
538 }
539
540 .main-content {
541 margin-left: 0;
542 }
543
544 .header-title {
545 display: none;
546 }
547
548 .upload-area {
549 padding: 60px 20px;
550 margin: 0 10px 30px;
551 }
552
553 .upload-info {
554 flex-direction: column;
555 gap: 30px;
556 padding: 10px;
557 }
558
559 .content-wrapper {
560 padding: 15px;
561 }
562
563 .upload-tabs {
564 gap: 15px;
565 }
566
567 .page-content {
568 padding: 20px;
569 margin: 10px;
570 }
571
572 .page-title {
573 font-size: 20px;
574 }
575
576 .placeholder-title {
577 font-size: 18px;
578 }
579
580 .placeholder-desc {
581 font-size: 13px;
582 }
583}