main
css 318 lines 6 KB
Raw
1 /* MAPS Connect - Components */
2
3 .card {
4 background: white;
5 border: 1px solid var(--gray-200);
6 border-radius: var(--border-radius);
7 padding: 1.5rem;
8 margin-bottom: 1rem;
9 }
10
11 .card-title {
12 font-size: 1.1rem;
13 margin-bottom: 1rem;
14 }
15
16 .btn {
17 display: inline-block;
18 padding: 0.625rem 1.25rem;
19 border: none;
20 border-radius: var(--border-radius);
21 font-size: 0.95rem;
22 cursor: pointer;
23 text-decoration: none;
24 text-align: center;
25 transition: opacity 0.2s;
26 }
27
28 .btn:hover {
29 opacity: 0.9;
30 text-decoration: none;
31 }
32
33 .btn-primary {
34 background: var(--btn-primary-bg);
35 color: var(--btn-primary-text);
36 }
37
38 .btn-secondary {
39 background: var(--secondary-color);
40 color: white;
41 }
42
43 .btn-outline {
44 background: transparent;
45 border: 1px solid var(--btn-outline-border);
46 color: var(--btn-outline-text);
47 }
48
49 .btn-danger {
50 background: var(--danger-color);
51 color: white;
52 }
53
54 .btn-sm {
55 padding: 0.375rem 0.75rem;
56 font-size: 0.875rem;
57 }
58
59 .form-group {
60 margin-bottom: 1rem;
61 }
62
63 .form-group label {
64 display: block;
65 margin-bottom: 0.375rem;
66 font-weight: 500;
67 font-size: 0.9rem;
68 }
69
70 .form-control {
71 width: 100%;
72 padding: 0.625rem 0.75rem;
73 border: 1px solid var(--gray-300);
74 border-radius: var(--border-radius);
75 font-size: 1rem;
76 }
77
78 .form-control:focus {
79 outline: none;
80 border-color: var(--primary-color);
81 box-shadow: 0 0 0 2px rgba(30, 64, 175, 0.15);
82 }
83
84 .form-hint {
85 font-size: 0.8rem;
86 color: var(--gray-600);
87 margin-top: 0.25rem;
88 }
89
90 .alert {
91 padding: 0.75rem 1rem;
92 border-radius: var(--border-radius);
93 margin-bottom: 1rem;
94 }
95
96 .alert-error {
97 background: #fef2f2;
98 color: #991b1b;
99 border: 1px solid #fecaca;
100 }
101
102 .alert-success {
103 background: #ecfdf5;
104 color: #065f46;
105 border: 1px solid #a7f3d0;
106 }
107
108 .badge {
109 display: inline-block;
110 padding: 0.2rem 0.5rem;
111 font-size: 0.75rem;
112 border-radius: var(--border-radius);
113 background: var(--gray-200);
114 color: var(--gray-800);
115 }
116
117 .badge-primary {
118 background: #dbeafe;
119 color: var(--primary-color);
120 }
121
122 .badge-success {
123 background: #d1fae5;
124 color: #065f46;
125 }
126
127 /* ---------- Toast / notificaciones flotantes ---------- */
128 #toast-root {
129 position: fixed;
130 bottom: 1.25rem;
131 right: 1.25rem;
132 z-index: 5000;
133 display: flex;
134 flex-direction: column;
135 gap: 0.5rem;
136 max-width: min(22rem, calc(100vw - 2.5rem));
137 }
138
139 .toast {
140 padding: 0.75rem 1rem;
141 border-radius: var(--border-radius);
142 font-size: 0.9rem;
143 line-height: 1.35;
144 color: #1f2937;
145 background: #ffffff;
146 border: 1px solid var(--gray-200);
147 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14);
148 opacity: 0;
149 transform: translateY(8px);
150 transition: opacity 0.2s ease, transform 0.2s ease;
151 }
152
153 .toast.show {
154 opacity: 1;
155 transform: translateY(0);
156 }
157
158 .toast-info { border-left: 4px solid var(--primary-color); }
159 .toast-success { border-left: 4px solid #059669; }
160 .toast-error { border-left: 4px solid var(--danger-color); }
161
162 /* ---------- Avatar con foto ---------- */
163 .avatar-foto {
164 object-fit: cover;
165 display: block;
166 flex-shrink: 0;
167 }
168
169 /* ---------- Enlace a perfil p├║blico ---------- */
170 .user-link {
171 color: inherit;
172 text-decoration: none;
173 display: inline-flex;
174 align-items: center;
175 gap: 8px;
176 }
177
178 .user-link:hover {
179 text-decoration: underline;
180 }
181
182 /* ---------- Bot├│n Seguir / Siguiendo ---------- */
183 .follow-btn {
184 background: transparent;
185 border: 1px solid var(--accent-dark, #005a2b);
186 color: var(--accent-dark, #005a2b);
187 padding: 3px 12px;
188 font-size: 0.75rem;
189 font-weight: 600;
190 cursor: pointer;
191 border-radius: 0;
192 white-space: nowrap;
193 }
194
195 .follow-btn:hover {
196 background: var(--accent-soft, #e8f5e9);
197 }
198
199 .follow-btn.siguiendo {
200 background: var(--accent-dark, #005a2b);
201 color: #ffffff;
202 }
203
204 .follow-btn.siguiendo:hover {
205 background: #004420;
206 }
207
208 .follow-btn:disabled {
209 opacity: 0.6;
210 cursor: default;
211 }
212
213 /* ---------- Modal de Aviso de Privacidad / T├®rminos ---------- */
214 .aviso-modal-overlay {
215 position: fixed;
216 inset: 0;
217 z-index: 6000;
218 background: rgba(0, 0, 0, 0.55);
219 display: flex;
220 align-items: center;
221 justify-content: center;
222 padding: 1rem;
223 }
224
225 .aviso-modal {
226 background: #ffffff;
227 color: var(--text-color);
228 border: 1px solid var(--gray-300);
229 border-radius: var(--border-radius);
230 width: 100%;
231 max-width: 620px;
232 max-height: 88vh;
233 display: flex;
234 flex-direction: column;
235 box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
236 }
237
238 html.dark-mode .aviso-modal {
239 background: #161b22;
240 color: #e6edf3;
241 }
242
243 .aviso-modal-head {
244 display: flex;
245 justify-content: space-between;
246 align-items: center;
247 padding: 1rem 1.25rem;
248 border-bottom: 1px solid var(--gray-200);
249 }
250
251 .aviso-modal-head h3 {
252 margin: 0;
253 font-size: 1.05rem;
254 }
255
256 .aviso-modal-cerrar {
257 background: none;
258 border: none;
259 font-size: 1.5rem;
260 line-height: 1;
261 cursor: pointer;
262 color: var(--gray-600);
263 }
264
265 .aviso-modal-body {
266 padding: 1rem 1.25rem;
267 overflow-y: auto;
268 font-size: 0.9rem;
269 line-height: 1.5;
270 }
271
272 .aviso-modal-body h4 {
273 margin: 1rem 0 0.35rem;
274 font-size: 0.95rem;
275 color: var(--heading-color);
276 }
277
278 .aviso-modal-body p {
279 margin: 0 0 0.5rem;
280 color: var(--gray-600);
281 }
282
283 html.dark-mode .aviso-modal-body p {
284 color: #c9d1d9;
285 }
286
287 .aviso-modal-body hr {
288 margin: 1rem 0;
289 border: none;
290 border-top: 1px solid var(--gray-200);
291 }
292
293 .aviso-modal-foot {
294 padding: 0.85rem 1.25rem;
295 border-top: 1px solid var(--gray-200);
296 text-align: right;
297 }
298
299 /* ---------- Checkbox de aceptaci├│n (registro) ---------- */
300 .terminos-checkbox {
301 display: flex;
302 gap: 0.5rem;
303 align-items: flex-start;
304 font-size: 0.85rem;
305 color: var(--gray-600);
306 line-height: 1.4;
307 margin-top: 0.25rem;
308 }
309 .terminos-checkbox input {
310 margin-top: 0.15rem;
311 flex-shrink: 0;
312 }
313 .terminos-checkbox a {
314 cursor: pointer;
315 color: var(--link-color);
316 text-decoration: underline;
317 }
318