blob: 8fdd8d7e62877b61a8132be3e604537d01e8c179 [file] [log] [blame]
TRM-codingd1cbf672025-06-18 15:15:08 +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 max-width: none; /* 或者直接注释掉这一行 */
149 width: auto; /* 确保它能撑满父级 */
150 margin: 0; /* 取消水平 auto 居中 */
151}
152
153/* Upload Area */
154.upload-tabs {
155 display: flex;
156 gap: 20px;
157 margin-bottom: 30px;
158 border-bottom: 1px solid #e8eaed;
159}
160
161.upload-tab {
162 padding: 12px 0;
163 font-size: 16px;
164 color: #666;
165 cursor: pointer;
166 border-bottom: 2px solid transparent;
167 transition: all 0.2s;
168}
169
170.upload-tab.active {
171 color: #ff4757;
172 border-bottom-color: #ff4757;
173 font-weight: 500;
174}
175
176.upload-area {
177 background: #fff;
178 border-radius: 8px;
179 padding: 80px 40px;
180 text-align: center;
181 border: 2px dashed #ddd;
182 margin-bottom: 40px;
183 transition: all 0.2s;
184 min-height: 300px;
185 display: flex;
186 flex-direction: column;
187 justify-content: center;
188 align-items: center;
189 position: relative;
190}
191
192.upload-area:hover {
193 border-color: #ff4757;
194 background: #fff8f8;
195}
196
197.upload-area.drag-over {
198 border-color: #ff4757;
199 background: #fff0f0;
200 transform: scale(1.02);
201}
202
203.upload-icon {
204 width: 100px;
205 height: 100px;
206 margin: 0 auto 30px;
207 background: #f8f9fa;
208 border-radius: 50%;
209 display: flex;
210 align-items: center;
211 justify-content: center;
212 font-size: 40px;
213 color: #ccc;
214 transition: all 0.3s ease;
215}
216
217.upload-area:hover .upload-icon {
218 background: #ff475710;
219 color: #ff4757;
220 transform: scale(1.1);
221}
222
223.upload-area.drag-over .upload-icon {
224 background: #ff475720;
225 color: #ff4757;
226 transform: scale(1.2);
227}
228
229.upload-title {
230 font-size: 20px;
231 color: #333;
232 margin-bottom: 12px;
233 font-weight: 500;
234}
235
236.upload-subtitle {
237 font-size: 14px;
238 color: #999;
239 margin-bottom: 30px;
240}
241
242.upload-btn {
243 background: #ff4757;
244 color: white;
245 padding: 14px 28px;
246 border-radius: 6px;
247 font-size: 16px;
248 font-weight: 500;
249 transition: background 0.2s;
250 min-width: 120px;
251}
252
253.upload-btn:hover:not(:disabled) {
254 background: #ff3742;
255}
256
257.upload-btn:disabled {
258 background: #ccc;
259 cursor: not-allowed;
260}
261
262.upload-btn.uploading {
263 background: #ff4757;
264 opacity: 0.8;
265}
266
267/* File Preview */
268.file-preview-area {
269 background: #fff;
270 border-radius: 8px;
271 padding: 20px;
272 margin-bottom: 40px;
273 border: 1px solid #e8eaed;
274}
275
276/* Preview Header */
277.preview-header {
278 display: flex;
279 justify-content: space-between;
280 align-items: center;
281 margin-bottom: 16px;
282}
283
284.preview-title {
285 font-size: 16px;
286 color: #333;
287 margin-bottom: 16px;
288 font-weight: 500;
289}
290
291.clear-files-btn {
292 background: #ff4757;
293 color: white;
294 padding: 6px 12px;
295 border-radius: 4px;
296 font-size: 12px;
297 transition: background 0.2s;
298}
299
300.clear-files-btn:hover {
301 background: #ff3742;
302}
303
304.file-grid {
305 display: grid;
306 grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
307 gap: 16px;
308}
309
310.file-item {
311 display: flex;
312 flex-direction: column;
313 align-items: center;
314 padding: 12px;
315 border: 1px solid #f0f0f0;
316 border-radius: 6px;
317 transition: all 0.2s ease;
318 position: relative;
319}
320
321.file-item:hover {
322 border-color: #ff4757;
323 box-shadow: 0 2px 8px rgba(255, 71, 87, 0.1);
324}
325
326.file-item:hover .remove-file-btn {
327 opacity: 1;
328}
329
330.remove-file-btn {
331 position: absolute;
332 top: 4px;
333 right: 4px;
334 background: rgba(255, 71, 87, 0.8);
335 color: white;
336 border-radius: 50%;
337 width: 20px;
338 height: 20px;
339 display: flex;
340 align-items: center;
341 justify-content: center;
342 font-size: 14px;
343 font-weight: bold;
344 opacity: 0;
345 transition: all 0.2s;
346}
347
348.file-thumbnail {
349 width: 80px;
350 height: 80px;
351 border-radius: 6px;
352 overflow: hidden;
353 margin-bottom: 8px;
354 display: flex;
355 align-items: center;
356 justify-content: center;
357 background: #f8f9fa;
358}
359
360.file-thumbnail img {
361 width: 100%;
362 height: 100%;
363 object-fit: cover;
364}
365
366.video-thumbnail {
367 color: #666;
368}
369
370.file-info {
371 text-align: center;
372 width: 100%;
373}
374
375.file-name {
376 font-size: 12px;
377 color: #333;
378 margin-bottom: 4px;
379 font-weight: 500;
380}
381
382.file-size {
383 font-size: 11px;
384 color: #999;
385}
386
387/* Upload Progress */
388.progress-container {
389 margin-top: 20px;
390 width: 100%;
391 max-width: 400px;
392}
393
394.progress-bar {
395 width: 100%;
396 height: 8px;
397 background-color: #f0f0f0;
398 border-radius: 4px;
399 overflow: hidden;
400 margin-bottom: 8px;
401}
402
403.progress-fill {
404 height: 100%;
405 background: linear-gradient(90deg, #ff4757, #ff6b7a);
406 border-radius: 4px;
407 transition: width 0.3s ease;
408 position: relative;
409}
410
411.progress-fill::after {
412 content: '';
413 position: absolute;
414 top: 0;
415 left: 0;
416 right: 0;
417 bottom: 0;
418 background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
419 animation: shimmer 1.5s infinite;
420}
421
422@keyframes shimmer {
423 0% { transform: translateX(-100%); }
424 100% { transform: translateX(100%); }
425}
426
427.progress-text {
428 text-align: center;
429 font-size: 12px;
430 color: #666;
431 font-weight: 500;
432}
433
434/* Upload Info */
435.upload-info {
436 display: flex;
437 gap: 60px;
438 justify-content: center;
439 margin-top: 40px;
440 padding: 20px;
441 opacity: 1;
442 transition: opacity 0.3s ease;
443}
444
445.upload-info.fade-in {
446 animation: fadeIn 0.3s ease-in-out;
447}
448
449@keyframes fadeIn {
450 from {
451 opacity: 0;
452 transform: translateY(10px);
453 }
454 to {
455 opacity: 1;
456 transform: translateY(0);
457 }
458}
459
460.info-item {
461 text-align: center;
462 flex: 1;
463 max-width: 300px;
464}
465
466.info-title {
467 font-size: 16px;
468 color: #333;
469 margin-bottom: 12px;
470 font-weight: 500;
471}
472
473.info-desc {
474 font-size: 13px;
475 color: #666;
476 line-height: 1.6;
477}
478
479/* Page Content Styles */
480.page-content {
481 padding: 40px;
482 background: white;
483 border-radius: 12px;
484 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
485 margin: 20px 0;
486 min-height: 500px;
487}
488
489.page-header {
490 margin-bottom: 40px;
491 padding-bottom: 20px;
492 border-bottom: 1px solid #e8eaed;
493}
494
495.page-title {
496 font-size: 24px;
497 font-weight: 600;
498 color: #333;
499 margin: 0;
500}
501
502.page-body {
503 display: flex;
504 align-items: center;
505 justify-content: center;
506 min-height: 400px;
507}
508
509.placeholder-content {
510 text-align: center;
511 max-width: 400px;
512}
513
514.placeholder-icon {
515 color: #ff4757;
516 margin-bottom: 20px;
517 display: flex;
518 justify-content: center;
519}
520
521.placeholder-title {
522 font-size: 20px;
523 font-weight: 500;
524 color: #333;
525 margin: 0 0 15px 0;
526}
527
528.placeholder-desc {
529 font-size: 14px;
530 color: #666;
531 line-height: 1.6;
532 margin: 0;
533}
534
535/* Responsive */
536@media (max-width: 768px) {
537 .sidebar {
538 transform: translateX(-100%);
539 transition: transform 0.3s;
540 }
541
542 .main-content {
543 margin-left: 0;
544 }
545
546 .header-title {
547 display: none;
548 }
549
550 .upload-area {
551 padding: 60px 20px;
552 margin: 0 10px 30px;
553 }
554
555 .upload-info {
556 flex-direction: column;
557 gap: 30px;
558 padding: 10px;
559 }
560
561 .content-wrapper {
562 padding: 15px;
563 }
564
565 .upload-tabs {
566 gap: 15px;
567 }
568
569 .page-content {
570 padding: 20px;
571 margin: 10px;
572 }
573
574 .page-title {
575 font-size: 20px;
576 }
577
578 .placeholder-title {
579 font-size: 18px;
580 }
581
582 .placeholder-desc {
583 font-size: 13px;
584 }
585}