blob: 44cbc5dd69c7806c26544184b49d6c8804a1086e [file] [log] [blame]
wht30587822025-06-09 23:33:09 +08001/* AppealPage 特定样式 - 翡翠园林风格 */
2@import './SharedStyles.css';
3
4/* 申诉页面容器 */
5.appeal-page-container {
6 min-height: 100vh;
7 background: linear-gradient(135deg, #2d5016 0%, #4a7c59 20%, #8fbc8f 40%, #98fb98 60%, #f0fff0 100%);
8 position: relative;
9 font-family: 'Lora', serif;
10 overflow-x: hidden;
11 display: flex;
12}
13
14/* 背景装饰元素 */
15.appeal-page-container::before {
16 content: '';
17 position: fixed;
18 top: 0;
19 left: 0;
20 right: 0;
21 bottom: 0;
22 background:
23 radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.08) 0%, transparent 50%),
24 radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.06) 0%, transparent 50%),
25 radial-gradient(circle at 40% 40%, rgba(144, 238, 144, 0.08) 0%, transparent 50%);
26 animation: backgroundShift 25s ease-in-out infinite;
27 pointer-events: none;
28 z-index: 0;
29}
30
31/* 侧栏样式 */
32.appeal-sidebar {
33 width: 300px;
34 background: rgba(255, 255, 255, 0.95);
35 backdrop-filter: blur(20px);
36 border-right: 3px solid rgba(144, 238, 144, 0.3);
37 padding: 0;
38 position: relative;
39 z-index: 10;
40 box-shadow: 4px 0 20px rgba(45, 80, 22, 0.1);
41}
42
43.appeal-sidebar::before {
44 content: '';
45 position: absolute;
46 top: 0;
47 left: 0;
48 right: 0;
49 bottom: 0;
50 background: linear-gradient(180deg,
51 rgba(144, 238, 144, 0.05) 0%,
52 rgba(255, 255, 255, 0.02) 50%,
53 rgba(144, 238, 144, 0.05) 100%);
54 z-index: -1;
55}
56
57/* 侧栏标题 */
58.appeal-sidebar-title {
59 text-align: center;
60 padding: 25px 20px 20px 20px;
61 color: #2d5016;
62 font-family: 'Playfair Display', serif;
63 font-size: 1.5rem;
64 font-weight: 700;
65 margin: 0;
66 text-shadow: 0 2px 4px rgba(45, 80, 22, 0.1);
67 border-bottom: 2px solid rgba(144, 238, 144, 0.2);
68 background: linear-gradient(135deg, rgba(144, 238, 144, 0.1), rgba(255, 255, 255, 0.1));
69}
70
71/* 申诉列表容器 */
72.appeal-list-container {
73 display: flex;
74 flex-direction: column;
75 gap: 15px;
76 margin-top: 20px;
77 padding: 0 15px;
78}
79
80/* 申诉项目 */
81.appeal-list-item {
82 margin: 0;
83 padding: 18px 15px;
84 border-radius: 15px;
85 background: rgba(255, 255, 255, 0.8);
86 border: 2px solid transparent;
87 font-weight: 600;
88 cursor: pointer;
89 transition: all 0.3s ease;
90 position: relative;
91 overflow: hidden;
92 box-shadow: 0 4px 15px rgba(45, 80, 22, 0.08);
93}
94
95.appeal-list-item::before {
96 content: '';
97 position: absolute;
98 top: 0;
99 left: -100%;
100 width: 100%;
101 height: 100%;
102 background: linear-gradient(90deg,
103 transparent,
104 rgba(144, 238, 144, 0.1),
105 transparent);
106 transition: left 0.5s ease;
107}
108
109.appeal-list-item:hover::before {
110 left: 100%;
111}
112
113.appeal-list-item:hover {
114 transform: translateX(8px);
115 box-shadow: 0 8px 25px rgba(45, 80, 22, 0.15);
116}
117
118/* 选中状态 */
119.appeal-list-item.selected {
120 background: rgba(144, 238, 144, 0.15);
121 border-color: rgba(144, 238, 144, 0.5);
122 transform: translateX(8px);
123 box-shadow: 0 8px 25px rgba(144, 238, 144, 0.2);
124}
125
126/* 审核状态样式 */
127.appeal-list-item.approved {
128 border-color: rgba(67, 160, 71, 0.6);
129 color: #2e7d32;
130}
131
132.appeal-list-item.pending {
133 border-color: rgba(229, 57, 53, 0.6);
134 color: #c62828;
135}
136
137/* 状态标签 */
138.appeal-status-label {
139 float: right;
140 font-size: 12px;
141 padding: 2px 8px;
142 border-radius: 8px;
143 font-weight: 500;
144}
145
146.appeal-status-label.approved {
147 background: rgba(67, 160, 71, 0.1);
148 color: #2e7d32;
149}
150
151.appeal-status-label.pending {
152 background: rgba(229, 57, 53, 0.1);
153 color: #c62828;
154}
155
156/* 主内容区域 */
157.appeal-main-content {
158 flex: 1;
159 padding: 40px 50px;
160 position: relative;
161 z-index: 10;
162}
163
164/* 详情标题 */
165.appeal-detail-title {
166 margin-bottom: 30px;
167 color: #fff;
168 font-family: 'Playfair Display', serif;
169 font-size: 2.2rem;
170 font-weight: 700;
171 text-shadow: 0 4px 12px rgba(45, 80, 22, 0.4);
172 letter-spacing: 1px;
173}
174
175/* 详情卡片 */
176.appeal-detail-card {
177 background: rgba(255, 255, 255, 0.95);
178 backdrop-filter: blur(20px);
179 border-radius: 25px;
180 padding: 35px 40px;
181 margin-bottom: 35px;
182 box-shadow:
183 0 20px 60px rgba(45, 80, 22, 0.12),
184 0 8px 25px rgba(144, 238, 144, 0.08),
185 inset 0 1px 0 rgba(255, 255, 255, 0.9);
186 border: 2px solid rgba(144, 238, 144, 0.2);
187 position: relative;
188 overflow: hidden;
189}
190
191.appeal-detail-card::before {
192 content: '';
193 position: absolute;
194 top: -2px;
195 left: -2px;
196 right: -2px;
197 bottom: -2px;
198 background: linear-gradient(45deg,
199 #90ee90 0%,
200 #98fb98 25%,
201 #f0fff0 50%,
202 #98fb98 75%,
203 #90ee90 100%);
204 border-radius: 27px;
205 z-index: -1;
206 animation: borderGlow 4s ease-in-out infinite;
207}
208
209/* 详情项目 */
210.appeal-detail-item {
211 margin-bottom: 25px;
212 font-size: 16px;
213 line-height: 1.6;
214 color: #2d5016;
215}
216
217.appeal-detail-item b {
218 color: #1a5c1a;
219 font-weight: 700;
220 margin-right: 8px;
221}
222
223/* 文件查看器样式 */
224.file-viewer-container {
225 margin-top: 15px;
226 padding: 20px;
227 background: rgba(144, 238, 144, 0.05);
228 border-radius: 15px;
229 border: 1px solid rgba(144, 238, 144, 0.2);
230}
231
232.file-viewer-iframe {
233 border: 2px solid rgba(144, 238, 144, 0.3);
234 border-radius: 12px;
235 width: 100%;
236 height: 400px;
237 transition: all 0.3s ease;
238}
239
240.file-viewer-iframe:hover {
241 border-color: rgba(144, 238, 144, 0.5);
242 box-shadow: 0 4px 15px rgba(144, 238, 144, 0.2);
243}
244
245.file-download-link {
246 color: #2d5016;
247 text-decoration: none;
248 font-weight: 600;
249 padding: 10px 20px;
250 background: rgba(144, 238, 144, 0.1);
251 border-radius: 10px;
252 display: inline-block;
253 transition: all 0.3s ease;
254 border: 1px solid rgba(144, 238, 144, 0.3);
255}
256
257.file-download-link:hover {
258 background: rgba(144, 238, 144, 0.2);
259 transform: translateY(-2px);
260 box-shadow: 0 4px 12px rgba(144, 238, 144, 0.3);
261}
262
263/* 按钮容器 */
264.appeal-buttons-container {
265 display: flex;
266 gap: 35px;
267 justify-content: center;
268 margin-top: 40px;
269}
270
271/* 审核按钮样式 */
272.appeal-btn {
273 border: none;
274 border-radius: 15px;
275 padding: 15px 40px;
276 font-weight: 700;
277 font-size: 18px;
278 cursor: pointer;
279 transition: all 0.3s ease;
280 font-family: 'Lora', serif;
281 letter-spacing: 1px;
282 position: relative;
283 overflow: hidden;
284 box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
285}
286
287.appeal-btn::before {
288 content: '';
289 position: absolute;
290 top: 50%;
291 left: 50%;
292 width: 0;
293 height: 0;
294 background: rgba(255, 255, 255, 0.2);
295 border-radius: 50%;
296 transition: all 0.3s ease;
297 transform: translate(-50%, -50%);
298}
299
300.appeal-btn:hover::before {
301 width: 120px;
302 height: 120px;
303}
304
305.appeal-btn:hover {
306 transform: translateY(-4px);
307 box-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
308}
309
310/* 通过按钮 */
311.appeal-btn-approve {
312 background: linear-gradient(135deg, #43a047, #2e7d32);
313 color: white;
314}
315
316.appeal-btn-approve:disabled {
317 background: linear-gradient(135deg, #bdbdbd, #9e9e9e);
318 cursor: not-allowed;
319 transform: none;
320 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
321}
322
323.appeal-btn-approve:disabled:hover {
324 transform: none;
325 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
326}
327
328/* 拒绝按钮 */
329.appeal-btn-reject {
330 background: linear-gradient(135deg, #e53935, #c62828);
331 color: white;
332}
333
334.appeal-btn-reject:disabled {
335 background: linear-gradient(135deg, #bdbdbd, #9e9e9e);
336 cursor: not-allowed;
337 transform: none;
338 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
339}
340
341.appeal-btn-reject:disabled:hover {
342 transform: none;
343 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
344}
345
346/* 加载和错误状态 */
347.appeal-loading,
348.appeal-error {
349 display: flex;
350 justify-content: center;
351 align-items: center;
352 min-height: 100vh;
353 font-size: 24px;
354 font-weight: 600;
355 color: #fff;
356 text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
357}
358
359.appeal-error {
360 color: #ffcdd2;
361}
362
363/* 动画效果 */
364@keyframes backgroundShift {
365 0%, 100% { transform: scale(1) rotate(0deg); }
366 50% { transform: scale(1.1) rotate(1deg); }
367}
368
369@keyframes borderGlow {
370 0%, 100% { opacity: 0.6; }
371 50% { opacity: 1; }
372}
373
374/* 响应式设计 */
375@media (max-width: 768px) {
376 .appeal-page-container {
377 flex-direction: column;
378 }
379
380 .appeal-sidebar {
381 width: 100%;
382 border-right: none;
383 border-bottom: 3px solid rgba(144, 238, 144, 0.3);
384 }
385
386 .appeal-list-container {
387 flex-direction: row;
388 overflow-x: auto;
389 padding: 0 15px 20px 15px;
390 }
391
392 .appeal-list-item {
393 min-width: 200px;
394 flex-shrink: 0;
395 }
396
397 .appeal-main-content {
398 padding: 20px 25px;
399 }
400
401 .appeal-detail-title {
402 font-size: 1.8rem;
403 }
404
405 .appeal-detail-card {
406 padding: 25px 30px;
407 }
408
409 .appeal-buttons-container {
410 gap: 20px;
411 flex-wrap: wrap;
412 }
413
414 .appeal-btn {
415 padding: 12px 30px;
416 font-size: 16px;
417 }
418}
419
420@media (max-width: 480px) {
421 .appeal-sidebar-title {
422 font-size: 1.2rem;
423 padding: 20px 15px 15px 15px;
424 }
425
426 .appeal-main-content {
427 padding: 15px 20px;
428 }
429
430 .appeal-detail-title {
431 font-size: 1.5rem;
432 margin-bottom: 20px;
433 }
434
435 .appeal-detail-card {
436 padding: 20px 25px;
437 margin-bottom: 25px;
438 }
439
440 .appeal-detail-item {
441 font-size: 15px;
442 margin-bottom: 20px;
443 }
444
445 .appeal-buttons-container {
446 flex-direction: column;
447 align-items: center;
448 }
449
450 .appeal-btn {
451 width: 100%;
452 max-width: 300px;
453 padding: 12px 20px;
454 font-size: 16px;
455 }
456}