main
css 613 lines 11.1 KB
Raw
1 /* MAPS Connect - Comunidad y Recursos (Foro + Apuntes + Tips) */
2
3 :root {
4 --hub-accent: var(--accent-dark, #005a2b);
5 --hub-accent-dark: #004420;
6 --hub-accent-soft: var(--accent-soft, #e8f5e9);
7 --hub-border: #dcdfe6;
8 --hub-bg: #f4f6f8;
9 --hub-text: #1a1a1a;
10 --hub-muted: #666;
11 }
12
13 .academic-hub-container {
14 max-width: 1050px;
15 margin: 0 auto;
16 width: 100%;
17 }
18
19 /* Bordes rectos institucionales (scopeado a la página) */
20 .academic-hub-container .card,
21 .academic-hub-container .input-search,
22 .academic-hub-container .select-materia,
23 .academic-hub-container .btn-solid,
24 .academic-hub-container .btn-clean,
25 .academic-hub-container .badge,
26 .academic-hub-container .file-icon,
27 .academic-hub-container .solved-box {
28 border-radius: 0;
29 }
30
31 .academic-hub-container .card {
32 background: #ffffff;
33 border: 1px solid var(--hub-border);
34 padding: 20px;
35 margin-bottom: 16px;
36 }
37
38 /* Aviso de filtro por carrera */
39 .filter-note {
40 display: inline-block;
41 margin: 0 0 0.75rem;
42 padding: 0.35rem 0.625rem;
43 background: var(--hub-accent-soft);
44 border: 1px solid var(--accent-soft-border, #c8e6c9);
45 color: var(--hub-accent-dark);
46 font-size: 0.83rem;
47 }
48
49 .filter-note[hidden] { display: none; }
50
51 /* --- 1. BARRA DE BÚSQUEDA Y FILTRO SUPERIOR --- */
52 .hub-filter-bar {
53 display: grid;
54 grid-template-columns: 2fr 1.2fr auto;
55 gap: 12px;
56 margin-bottom: 20px;
57 }
58
59 @media (max-width: 768px) {
60 .hub-filter-bar {
61 grid-template-columns: 1fr;
62 }
63 }
64
65 .input-search,
66 .select-materia {
67 padding: 10px 14px;
68 border: 1px solid var(--hub-border);
69 background: #ffffff;
70 font-size: 0.9rem;
71 outline: none;
72 color: var(--hub-text);
73 }
74
75 .input-search:focus,
76 .select-materia:focus {
77 border-color: var(--hub-accent);
78 }
79
80 /* Selector de archivo en el modal de apuntes */
81 .file-pick-row {
82 display: flex;
83 align-items: center;
84 gap: 10px;
85 }
86
87 .file-pick-row input[type="file"] {
88 padding: 9px 14px;
89 border: 1px solid var(--hub-border);
90 background: #ffffff;
91 font-size: 0.88rem;
92 color: var(--hub-text);
93 max-width: 60%;
94 }
95
96 .file-pick-nombre {
97 font-size: 0.78rem;
98 color: var(--hub-muted);
99 white-space: nowrap;
100 overflow: hidden;
101 text-overflow: ellipsis;
102 max-width: 40%;
103 }
104
105 .btn-solid {
106 background-color: var(--hub-accent);
107 color: #ffffff;
108 border: none;
109 padding: 10px 18px;
110 font-size: 0.9rem;
111 font-weight: bold;
112 cursor: pointer;
113 white-space: nowrap;
114 }
115
116 .btn-solid:hover {
117 background-color: var(--hub-accent-dark);
118 }
119
120 .btn-clean {
121 background-color: transparent;
122 color: var(--hub-accent);
123 border: 1px solid var(--hub-accent);
124 padding: 6px 14px;
125 font-size: 0.85rem;
126 font-weight: 600;
127 cursor: pointer;
128 }
129
130 .btn-clean:hover {
131 background-color: var(--hub-accent-soft);
132 }
133
134 /* --- 2. PESTAÑAS DE SUB-NAVEGACIÓN --- */
135 .hub-tabs {
136 display: flex;
137 border-bottom: 2px solid var(--hub-border);
138 margin-bottom: 20px;
139 background: #ffffff;
140 }
141
142 .tab-button {
143 flex: 1;
144 padding: 14px;
145 background: none;
146 border: none;
147 border-bottom: 3px solid transparent;
148 font-size: 0.95rem;
149 font-weight: bold;
150 color: var(--hub-muted);
151 cursor: pointer;
152 text-align: center;
153 }
154
155 .tab-button:hover {
156 color: var(--hub-accent);
157 }
158
159 .tab-button.active {
160 color: var(--hub-accent);
161 border-bottom-color: var(--hub-accent);
162 background-color: #fafafa;
163 }
164
165 /* Paneles de contenido */
166 .tab-panel {
167 display: none;
168 }
169
170 .tab-panel.active {
171 display: block;
172 }
173
174 /* Badges */
175 .hub-badge {
176 padding: 3px 8px;
177 font-size: 0.75rem;
178 font-weight: bold;
179 display: inline-block;
180 }
181
182 .badge-materia {
183 background-color: var(--hub-accent-soft);
184 color: var(--hub-accent);
185 border: 1px solid var(--accent-soft-border, #c8e6c9);
186 }
187
188 .badge-solved {
189 background-color: var(--accent-soft, #dcfce7);
190 color: #166534;
191 border: 1px solid #bbf7d0;
192 }
193
194 .badge-verified {
195 background-color: #e0f2fe;
196 color: #0284c7;
197 border: 1px solid #bae6fd;
198 }
199
200 /* --- ESTILOS: FORO DE DUDAS --- */
201 .post-header {
202 display: flex;
203 justify-content: space-between;
204 align-items: flex-start;
205 margin-bottom: 8px;
206 gap: 12px;
207 flex-wrap: wrap;
208 }
209
210 .post-meta {
211 font-size: 0.8rem;
212 color: #888;
213 }
214
215 .hub-avatar {
216 width: 38px;
217 height: 38px;
218 background-color: var(--accent-dark, #005a2b);
219 color: #ffffff;
220 display: flex;
221 align-items: center;
222 justify-content: center;
223 font-weight: bold;
224 font-size: 0.85rem;
225 flex-shrink: 0;
226 border-radius: 0;
227 }
228
229 .hub-avatar.avatar-foto {
230 object-fit: cover;
231 width: 38px;
232 height: 38px;
233 }
234
235 .foro-autor {
236 display: flex;
237 align-items: center;
238 gap: 10px;
239 }
240
241 .foro-autor-line {
242 display: flex;
243 align-items: center;
244 gap: 8px;
245 margin-bottom: 2px;
246 }
247
248 .foro-autor-line strong {
249 font-size: 0.9rem;
250 color: #222;
251 }
252
253 .post-title {
254 font-size: 1.1rem;
255 color: #111;
256 margin-bottom: 6px;
257 }
258
259 .post-desc {
260 font-size: 0.9rem;
261 color: #444;
262 line-height: 1.4;
263 margin-bottom: 12px;
264 }
265
266 .post-desc code {
267 background: #f3f4f6;
268 padding: 1px 5px;
269 font-size: 0.85em;
270 }
271
272 .solved-box {
273 background-color: #f9fafb;
274 border-left: 3px solid var(--hub-accent);
275 padding: 10px 12px;
276 margin: 10px 0;
277 font-size: 0.85rem;
278 }
279
280 .post-footer {
281 display: flex;
282 justify-content: space-between;
283 align-items: center;
284 border-top: 1px solid #f0f0f0;
285 padding-top: 10px;
286 margin-top: 10px;
287 font-size: 0.82rem;
288 color: var(--hub-muted);
289 }
290
291 .post-actions {
292 display: flex;
293 gap: 12px;
294 flex-wrap: wrap;
295 }
296
297 .btn-link {
298 background: none;
299 border: none;
300 color: #555;
301 font-weight: 600;
302 font-size: 0.82rem;
303 cursor: pointer;
304 }
305
306 .btn-link:hover {
307 color: var(--hub-accent);
308 }
309
310 /* --- ESTILOS: APUNTES Y REPOSITORIO --- */
311 .apunte-card {
312 display: flex;
313 justify-content: space-between;
314 align-items: center;
315 flex-wrap: wrap;
316 gap: 16px;
317 }
318
319 .apunte-info {
320 display: flex;
321 align-items: flex-start;
322 gap: 14px;
323 }
324
325 .file-icon {
326 width: 44px;
327 height: 44px;
328 background-color: var(--hub-accent-soft);
329 color: var(--hub-accent);
330 display: flex;
331 align-items: center;
332 justify-content: center;
333 font-weight: bold;
334 font-size: 0.85rem;
335 border: 1px solid var(--accent-soft-border, #c8e6c9);
336 flex-shrink: 0;
337 }
338
339 .apunte-details h4 {
340 font-size: 1rem;
341 color: #111;
342 margin-bottom: 4px;
343 }
344
345 .apunte-details p {
346 font-size: 0.82rem;
347 color: var(--hub-muted);
348 }
349
350 /* --- ESTILOS: TIPS ACADÉMICOS --- */
351 .tip-grid {
352 display: grid;
353 grid-template-columns: 1fr 1fr;
354 gap: 16px;
355 }
356
357 @media (max-width: 768px) {
358 .tip-grid {
359 grid-template-columns: 1fr;
360 }
361 }
362
363 .tip-card {
364 border-top: 3px solid var(--hub-accent);
365 display: flex;
366 flex-direction: column;
367 justify-content: space-between;
368 }
369
370 .tip-card .tip-head {
371 display: flex;
372 justify-content: space-between;
373 align-items: center;
374 gap: 8px;
375 flex-wrap: wrap;
376 }
377
378 .tip-title {
379 font-size: 1.05rem;
380 color: #111;
381 margin: 8px 0;
382 }
383
384 .tip-text {
385 font-size: 0.88rem;
386 color: #444;
387 line-height: 1.4;
388 margin-bottom: 12px;
389 }
390
391 .tip-text code {
392 background: #f3f4f6;
393 padding: 1px 5px;
394 font-size: 0.85em;
395 }
396
397 .vote-badge {
398 font-size: 0.82rem;
399 font-weight: bold;
400 color: var(--hub-accent);
401 }
402
403 .vote-btn {
404 background: none;
405 border: 1px solid transparent;
406 color: var(--hub-accent);
407 font-size: 0.82rem;
408 font-weight: bold;
409 cursor: pointer;
410 padding: 4px 8px;
411 border-radius: 0;
412 }
413
414 .vote-btn:hover {
415 border-color: var(--hub-accent);
416 background-color: var(--hub-accent-soft);
417 }
418
419 .vote-btn.votado {
420 background-color: var(--hub-accent);
421 color: #ffffff;
422 }
423
424 /* --- MODAL (compartir tip / nueva duda / subir apunte) --- */
425 .hub-modal-overlay {
426 position: fixed;
427 inset: 0;
428 background: rgba(0, 0, 0, 0.45);
429 display: flex;
430 align-items: flex-start;
431 justify-content: center;
432 padding: 60px 16px 16px;
433 z-index: 1000;
434 }
435
436 .hub-modal {
437 background: #ffffff;
438 max-width: 520px;
439 width: 100%;
440 max-height: calc(100vh - 90px);
441 overflow-y: auto;
442 padding: 24px;
443 border-top: 3px solid var(--hub-accent);
444 box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);
445 }
446
447 .hub-modal h3 {
448 margin: 0 0 4px;
449 font-size: 1.15rem;
450 color: #111;
451 }
452
453 .hub-modal .modal-sub {
454 margin: 0 0 16px;
455 font-size: 0.85rem;
456 color: var(--hub-muted);
457 }
458
459 .hub-modal label {
460 display: block;
461 font-size: 0.85rem;
462 font-weight: bold;
463 color: #333;
464 margin: 12px 0 6px;
465 }
466
467 .hub-modal .input-search,
468 .hub-modal .select-materia,
469 .hub-modal textarea {
470 width: 100%;
471 box-sizing: border-box;
472 }
473
474 .hub-modal textarea {
475 min-height: 120px;
476 padding: 10px 14px;
477 border: 1px solid var(--hub-border);
478 font-size: 0.9rem;
479 font-family: inherit;
480 color: var(--hub-text);
481 outline: none;
482 resize: vertical;
483 }
484
485 .hub-modal textarea:focus {
486 border-color: var(--hub-accent);
487 }
488
489 .modal-actions {
490 display: flex;
491 justify-content: flex-end;
492 gap: 10px;
493 margin-top: 20px;
494 }
495
496 .modal-msg {
497 font-size: 0.85rem;
498 margin-top: 12px;
499 min-height: 18px;
500 }
501
502 .modal-msg.ok { color: var(--hub-accent); }
503 .modal-msg.err { color: #b3261e; }
504
505 /* --- MODAL DE DUPLICADO (pregunta ya existente) --- */
506 .dup-overlay { align-items: center; }
507
508 .dup-modal {
509 max-width: 760px;
510 max-height: 84vh;
511 overflow: auto;
512 }
513
514 .dup-notice {
515 background: #fff7e6;
516 border: 1px solid #f5d78a;
517 padding: 14px 16px;
518 margin-bottom: 16px;
519 }
520
521 .dup-notice .dup-titulo {
522 display: block;
523 color: #7a5900;
524 font-size: 0.98rem;
525 margin-bottom: 4px;
526 }
527
528 .dup-notice p {
529 margin: 0;
530 font-size: 0.85rem;
531 color: #7a5f22;
532 }
533
534 .dup-question {
535 border: 1px solid var(--hub-border);
536 background: #fbfdfb;
537 padding: 14px 16px;
538 margin-bottom: 16px;
539 }
540
541 .dup-question .tip-title { margin: 8px 0 4px; }
542
543 .dup-question .dup-por {
544 margin: 8px 0 0;
545 font-size: 0.78rem;
546 color: var(--hub-muted);
547 }
548
549 .dup-sections {
550 display: grid;
551 grid-template-columns: 1fr 1fr;
552 gap: 16px;
553 }
554
555 @media (max-width: 640px) {
556 .dup-sections { grid-template-columns: 1fr; }
557 }
558
559 .dup-section-title {
560 margin: 0 0 8px;
561 font-size: 0.88rem;
562 color: #333;
563 border-bottom: 1px solid var(--hub-border);
564 padding-bottom: 6px;
565 }
566
567 .dup-respuestas, .dup-tips, .dup-recursos {
568 display: flex;
569 flex-direction: column;
570 gap: 10px;
571 }
572
573 .dup-vacio {
574 font-size: 0.82rem;
575 color: var(--hub-muted);
576 margin: 4px 0;
577 }
578
579 .dup-modal .tip-card, .dup-modal .apunte-card { margin: 0; }
580
581 .hub-respuesta {
582 border: 1px solid var(--hub-border);
583 padding: 10px 12px;
584 background: #fff;
585 }
586
587 .respuesta-head {
588 display: flex;
589 justify-content: space-between;
590 align-items: center;
591 gap: 8px;
592 margin-bottom: 4px;
593 }
594
595 .respuesta-autor {
596 font-size: 0.78rem;
597 font-weight: bold;
598 color: #555;
599 }
600
601 .respuesta-texto {
602 margin: 0;
603 font-size: 0.86rem;
604 color: var(--hub-text);
605 white-space: pre-line;
606 }
607
608 .badge-solucion {
609 background-color: var(--accent-soft, #dcfce7);
610 color: #166534;
611 border: 1px solid #bbf7d0;
612 }
613