mashlib 2.0.0-0dcca3d7 → 2.0.0-127ec63e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mash.css +817 -435
- package/dist/mash.css.map +1 -1
- package/dist/mashlib.js +4 -22
- package/dist/mashlib.js.map +1 -1
- package/dist/mashlib.min.js +4 -11
- package/dist/mashlib.min.js.map +1 -1
- package/package.json +4 -4
package/dist/mash.css
CHANGED
|
@@ -1,398 +1,3 @@
|
|
|
1
|
-
/* Global CSS: base styles, variables, and resets */
|
|
2
|
-
/* Accessible color palette */
|
|
3
|
-
|
|
4
|
-
:root {
|
|
5
|
-
/* Primary/Accent colors (profile-pane specific) */
|
|
6
|
-
--color-primary: #7C4DFF; /* Vivid Purple */
|
|
7
|
-
--color-secondary: #0077B6; /* Accessible Blue */
|
|
8
|
-
--color-accent: #FFD600; /* Bright Yellow */
|
|
9
|
-
--color-error: #B00020; /* Accessible Red */
|
|
10
|
-
--color-success: #00C853; /* Accessible Green */
|
|
11
|
-
|
|
12
|
-
/* Card/Section backgrounds */
|
|
13
|
-
--color-background: #FFFFFF; /* White */
|
|
14
|
-
--color-card-bg: #FFFFFF; /* White for inner cards */
|
|
15
|
-
--color-section-bg: #F5F5F5; /* Light grey for outer sections */
|
|
16
|
-
|
|
17
|
-
--text-color: #1A1A1A; /* Near-black */
|
|
18
|
-
--color-text-secondary: #666; /* Added for repeated usage */
|
|
19
|
-
--color-text-muted: #444; /* Added for repeated usage */
|
|
20
|
-
--border-light: #eee; /* Added for repeated borders */
|
|
21
|
-
--border-radius: 1rem; /* Matches module usage */
|
|
22
|
-
--border-radius-sm: 0.5rem;
|
|
23
|
-
--box-shadow: 0 2px 8px rgba(124,77,255,0.08); /* Matches module usage */
|
|
24
|
-
--box-shadow-sm: 0 1px 4px rgba(124,77,255,0.12);
|
|
25
|
-
--spacing-xs: 0.5rem;
|
|
26
|
-
--spacing-sm: 0.75rem;
|
|
27
|
-
--spacing-md: 1rem;
|
|
28
|
-
--spacing-lg: 1.5rem;
|
|
29
|
-
--spacing-xl: 2rem;
|
|
30
|
-
--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
31
|
-
--font-size-base: 1rem; /* 16px default */
|
|
32
|
-
--font-size-sm: 0.875rem; /* 14px */
|
|
33
|
-
--font-size-lg: 1.125rem; /* 18px */
|
|
34
|
-
--font-size-xl: 1.25rem; /* 20px */
|
|
35
|
-
--line-height-base: 1.5; /* WCAG recommended */
|
|
36
|
-
--line-height-tight: 1.4;
|
|
37
|
-
--line-height-loose: 1.6;
|
|
38
|
-
--letter-spacing-wide: 0.025em;
|
|
39
|
-
|
|
40
|
-
/* Minimum font sizes for accessibility */
|
|
41
|
-
--min-font-size: 14px;
|
|
42
|
-
--min-line-height: 1.4;
|
|
43
|
-
|
|
44
|
-
/* Accessibility improvements */
|
|
45
|
-
--min-touch-target: 44px; /* WCAG minimum touch target */
|
|
46
|
-
--focus-ring-width: 2px;
|
|
47
|
-
--animation-duration: 0.2s; /* Reduced motion friendly */
|
|
48
|
-
|
|
49
|
-
/* Additional accessibility variables */
|
|
50
|
-
--focus-indicator-width: 3px;
|
|
51
|
-
--animation-duration-slow: 0.3s;
|
|
52
|
-
--high-contrast-ratio: 7:1; /* WCAG AAA standard */
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
/* Improve text rendering */
|
|
57
|
-
html, body {
|
|
58
|
-
margin: 0;
|
|
59
|
-
padding: 0;
|
|
60
|
-
font-family: var(--font-family);
|
|
61
|
-
font-size: var(--font-size-base);
|
|
62
|
-
line-height: var(--line-height-base);
|
|
63
|
-
background: var(--color-background);
|
|
64
|
-
color: var(--text-color);
|
|
65
|
-
-webkit-font-smoothing: antialiased;
|
|
66
|
-
-moz-osx-font-smoothing: grayscale;
|
|
67
|
-
text-rendering: optimizeLegibility;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/* Improved heading hierarchy */
|
|
71
|
-
h1, h2, h3, h4, h5, h6 {
|
|
72
|
-
color: var(--color-primary);
|
|
73
|
-
font-weight: 600;
|
|
74
|
-
line-height: var(--line-height-tight);
|
|
75
|
-
margin-top: 0;
|
|
76
|
-
margin-bottom: var(--spacing-sm);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
h1 { font-size: 2rem; } /* 32px */
|
|
80
|
-
h2 { font-size: 1.5rem; } /* 24px */
|
|
81
|
-
h3 { font-size: 1.25rem; } /* 20px */
|
|
82
|
-
h4 { font-size: 1.125rem; }/* 18px */
|
|
83
|
-
h5, h6 { font-size: 1rem; }/* 16px */
|
|
84
|
-
|
|
85
|
-
/* Better paragraph spacing */
|
|
86
|
-
p {
|
|
87
|
-
margin-bottom: var(--spacing-md);
|
|
88
|
-
line-height: var(--line-height-base);
|
|
89
|
-
max-width: 65ch; /* Optimal reading width */
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/* Improved link accessibility */
|
|
93
|
-
a {
|
|
94
|
-
color: var(--color-primary);
|
|
95
|
-
text-decoration: underline;
|
|
96
|
-
text-underline-offset: 0.125em;
|
|
97
|
-
text-decoration-thickness: 0.0625em;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
a:hover, a:focus {
|
|
101
|
-
text-decoration-thickness: 0.125em;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/* Ensure minimum font sizes are respected */
|
|
105
|
-
@media screen and (max-width: 768px) {
|
|
106
|
-
html {
|
|
107
|
-
font-size: max(16px, 1rem); /* Never smaller than 16px on mobile */
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/* Support for larger text preferences */
|
|
112
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
113
|
-
html {
|
|
114
|
-
scroll-behavior: smooth;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/* Accessibility: focus styles */
|
|
119
|
-
:focus {
|
|
120
|
-
outline: 2px solid var(--color-primary);
|
|
121
|
-
outline-offset: 1px;
|
|
122
|
-
box-shadow: 0 0 0 1px var(--color-background);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/* Accessibility: Respect user motion preferences */
|
|
126
|
-
@media (prefers-reduced-motion: reduce) {
|
|
127
|
-
*, *::before, *::after {
|
|
128
|
-
animation-duration: 0.01ms !important;
|
|
129
|
-
animation-iteration-count: 1 !important;
|
|
130
|
-
transition-duration: 0.01ms !important;
|
|
131
|
-
scroll-behavior: auto !important;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/* Accessibility: High contrast mode support */
|
|
136
|
-
@media (prefers-contrast: high) {
|
|
137
|
-
:root {
|
|
138
|
-
--border-light: #000;
|
|
139
|
-
--box-shadow: 0 2px 4px rgba(0,0,0,0.5);
|
|
140
|
-
--box-shadow-sm: 0 1px 2px rgba(0,0,0,0.3);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/* Accessibility: Improved focus management */
|
|
145
|
-
:focus-visible {
|
|
146
|
-
outline: var(--focus-ring-width) solid var(--color-primary);
|
|
147
|
-
outline-offset: 2px;
|
|
148
|
-
box-shadow: 0 0 0 1px var(--color-background);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
:focus:not(:focus-visible) {
|
|
152
|
-
outline: none;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/* Skip link for screen readers */
|
|
156
|
-
.skip-link {
|
|
157
|
-
position: absolute;
|
|
158
|
-
top: -40px;
|
|
159
|
-
left: 6px;
|
|
160
|
-
background: var(--color-primary);
|
|
161
|
-
color: white;
|
|
162
|
-
padding: var(--spacing-sm) var(--spacing-md);
|
|
163
|
-
text-decoration: none;
|
|
164
|
-
border-radius: var(--border-radius-sm);
|
|
165
|
-
z-index: 1000;
|
|
166
|
-
font-weight: 600;
|
|
167
|
-
font-size: var(--font-size-base);
|
|
168
|
-
line-height: 1;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
.skip-link:focus {
|
|
172
|
-
top: 6px;
|
|
173
|
-
outline: 2px solid white;
|
|
174
|
-
outline-offset: 2px;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/* Semantic HTML5 improvements */
|
|
178
|
-
article, aside, section {
|
|
179
|
-
display: block;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
header {
|
|
183
|
-
margin-bottom: var(--spacing-md);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
nav {
|
|
187
|
-
display: block;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
nav ul {
|
|
191
|
-
list-style: none;
|
|
192
|
-
padding: 0;
|
|
193
|
-
margin: 0;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/* Enhanced keyboard navigation */
|
|
197
|
-
*:focus-visible {
|
|
198
|
-
outline: var(--focus-indicator-width) solid var(--color-primary);
|
|
199
|
-
outline-offset: 2px;
|
|
200
|
-
box-shadow: 0 0 0 1px var(--color-background), 0 0 0 4px rgba(124, 77, 255, 0.2);
|
|
201
|
-
border-radius: 2px;
|
|
202
|
-
transition: none; /* Remove transitions on focus for immediate feedback */
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/* Improve focus management for interactive elements */
|
|
206
|
-
[role="button"]:focus,
|
|
207
|
-
[role="link"]:focus,
|
|
208
|
-
button:focus,
|
|
209
|
-
a:focus {
|
|
210
|
-
outline: 2px solid var(--color-primary);
|
|
211
|
-
outline-offset: 2px;
|
|
212
|
-
box-shadow: 0 0 0 1px var(--color-background);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/* Enhanced error message accessibility */
|
|
216
|
-
[role="alert"] {
|
|
217
|
-
padding: var(--spacing-md);
|
|
218
|
-
border: 2px solid var(--color-error);
|
|
219
|
-
border-radius: var(--border-radius-sm);
|
|
220
|
-
background-color: rgba(176, 0, 32, 0.1);
|
|
221
|
-
margin: var(--spacing-md) 0;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/* Success message styling */
|
|
225
|
-
[role="status"] {
|
|
226
|
-
padding: var(--spacing-md);
|
|
227
|
-
border: 2px solid var(--color-success);
|
|
228
|
-
border-radius: var(--border-radius-sm);
|
|
229
|
-
background-color: rgba(0, 200, 83, 0.1);
|
|
230
|
-
margin: var(--spacing-md) 0;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/* Enhanced table accessibility */
|
|
234
|
-
table {
|
|
235
|
-
border-collapse: collapse;
|
|
236
|
-
width: 100%;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
th {
|
|
240
|
-
background-color: var(--color-section-bg);
|
|
241
|
-
font-weight: 600;
|
|
242
|
-
text-align: left;
|
|
243
|
-
padding: var(--spacing-sm);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
td {
|
|
247
|
-
padding: var(--spacing-sm);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/* Focus trap for modals */
|
|
251
|
-
.focus-trap {
|
|
252
|
-
position: fixed;
|
|
253
|
-
top: 0;
|
|
254
|
-
left: 0;
|
|
255
|
-
width: 100%;
|
|
256
|
-
height: 100%;
|
|
257
|
-
z-index: 9999;
|
|
258
|
-
background: rgba(0, 0, 0, 0.5);
|
|
259
|
-
display: flex;
|
|
260
|
-
justify-content: center;
|
|
261
|
-
align-items: center;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/* Enhanced button accessibility */
|
|
265
|
-
button, [role="button"] {
|
|
266
|
-
cursor: pointer;
|
|
267
|
-
border: none;
|
|
268
|
-
border-radius: var(--border-radius-sm);
|
|
269
|
-
padding: var(--spacing-sm) var(--spacing-md);
|
|
270
|
-
min-height: var(--min-touch-target);
|
|
271
|
-
min-width: var(--min-touch-target);
|
|
272
|
-
font-size: var(--font-size-base);
|
|
273
|
-
font-weight: 600;
|
|
274
|
-
transition: all var(--animation-duration) ease;
|
|
275
|
-
position: relative;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
button:disabled, [role="button"][aria-disabled="true"] {
|
|
279
|
-
opacity: 0.6;
|
|
280
|
-
cursor: not-allowed;
|
|
281
|
-
pointer-events: none;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/* Loading indicator accessibility */
|
|
285
|
-
.loading-spinner {
|
|
286
|
-
width: 40px;
|
|
287
|
-
height: 40px;
|
|
288
|
-
border: 3px solid var(--border-light);
|
|
289
|
-
border-top: 3px solid var(--color-primary);
|
|
290
|
-
border-radius: 50%;
|
|
291
|
-
animation: spin 1s linear infinite;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
@keyframes spin {
|
|
295
|
-
0% { transform: rotate(0deg); }
|
|
296
|
-
100% { transform: rotate(360deg); }
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
@media (prefers-reduced-motion: reduce) {
|
|
300
|
-
.loading-spinner {
|
|
301
|
-
animation: none;
|
|
302
|
-
border-top-color: var(--color-primary);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/* Utility classes */
|
|
307
|
-
.u-flex {
|
|
308
|
-
display: flex;
|
|
309
|
-
}
|
|
310
|
-
.u-grid {
|
|
311
|
-
display: grid;
|
|
312
|
-
}
|
|
313
|
-
.u-center {
|
|
314
|
-
justify-content: center;
|
|
315
|
-
align-items: center;
|
|
316
|
-
}
|
|
317
|
-
.u-gap {
|
|
318
|
-
gap: 1em;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
/* Common card component - used across all modules */
|
|
322
|
-
.module-card {
|
|
323
|
-
background: var(--color-card-bg);
|
|
324
|
-
border-radius: var(--border-radius);
|
|
325
|
-
box-shadow: var(--box-shadow);
|
|
326
|
-
padding: var(--spacing-lg);
|
|
327
|
-
margin-bottom: var(--spacing-lg);
|
|
328
|
-
width: 100%;
|
|
329
|
-
max-width: 100%;
|
|
330
|
-
box-sizing: border-box;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
/* Common header styles */
|
|
334
|
-
.module-header {
|
|
335
|
-
text-align: center;
|
|
336
|
-
margin-bottom: var(--spacing-md);
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
/* Common flex patterns */
|
|
340
|
-
.flex-center {
|
|
341
|
-
display: flex;
|
|
342
|
-
justify-content: center;
|
|
343
|
-
align-items: center;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
.flex-column {
|
|
347
|
-
display: flex;
|
|
348
|
-
flex-direction: column;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
.flex-column-center {
|
|
352
|
-
display: flex;
|
|
353
|
-
flex-direction: column;
|
|
354
|
-
align-items: center;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
/* Text utilities */
|
|
358
|
-
.text-center {
|
|
359
|
-
text-align: center;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
.text-secondary {
|
|
363
|
-
color: var(--color-text-secondary);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.text-muted {
|
|
367
|
-
color: var(--color-text-muted);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
/* Responsive grid for profile */
|
|
371
|
-
.profile-grid {
|
|
372
|
-
display: grid;
|
|
373
|
-
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
374
|
-
gap: 1.5em;
|
|
375
|
-
background: var(--profile-grid-bg, var(--color-background));
|
|
376
|
-
}
|
|
377
|
-
.profile-header, .profile-footer {
|
|
378
|
-
grid-column: 1 / -1;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
/* Override solid-ui error message close button styling */
|
|
382
|
-
.errorMessageBlock .close,
|
|
383
|
-
.errorMessageBlock button[type="button"],
|
|
384
|
-
.errorMessageBlock .button {
|
|
385
|
-
background: var(--border-light) !important;
|
|
386
|
-
color: var(--text-color) !important;
|
|
387
|
-
border: 1px solid var(--border-light) !important;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
.errorMessageBlock .close:hover,
|
|
391
|
-
.errorMessageBlock button[type="button"]:hover,
|
|
392
|
-
.errorMessageBlock .button:hover {
|
|
393
|
-
background: var(--color-text-secondary) !important;
|
|
394
|
-
color: var(--color-background) !important;
|
|
395
|
-
}
|
|
396
1
|
/* CVCard.css */
|
|
397
2
|
/* Note: Uses utilities: .section-title for cvOrg styling */
|
|
398
3
|
|
|
@@ -422,12 +27,12 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
422
27
|
}
|
|
423
28
|
|
|
424
29
|
.cvSection h3 {
|
|
425
|
-
color: var(--text
|
|
30
|
+
color: var(--color-text);
|
|
426
31
|
font-size: var(--font-size-lg);
|
|
427
32
|
font-weight: 600;
|
|
428
33
|
line-height: var(--line-height-tight);
|
|
429
34
|
margin-bottom: var(--spacing-xs);
|
|
430
|
-
border-bottom: 1px solid var(--border-
|
|
35
|
+
border-bottom: 1px solid var(--color-border-pale);
|
|
431
36
|
padding-bottom: var(--spacing-xs);
|
|
432
37
|
}
|
|
433
38
|
|
|
@@ -443,7 +48,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
443
48
|
|
|
444
49
|
.friendItem {
|
|
445
50
|
padding: var(--spacing-xs) 0;
|
|
446
|
-
font-size:
|
|
51
|
+
font-size: 1em;
|
|
447
52
|
color: var(--color-text-muted);
|
|
448
53
|
}
|
|
449
54
|
|
|
@@ -515,7 +120,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
515
120
|
|
|
516
121
|
.buttonSection {
|
|
517
122
|
color: var(--color-text-secondary);
|
|
518
|
-
font-size:
|
|
123
|
+
font-size: 1em;
|
|
519
124
|
margin-bottom: var(--spacing-xs);
|
|
520
125
|
}
|
|
521
126
|
|
|
@@ -531,7 +136,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
531
136
|
|
|
532
137
|
.qrCodeSection {
|
|
533
138
|
color: var(--color-text-secondary);
|
|
534
|
-
font-size:
|
|
139
|
+
font-size: 1em;
|
|
535
140
|
margin-bottom: var(--spacing-xs);
|
|
536
141
|
}
|
|
537
142
|
|
|
@@ -555,10 +160,17 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
555
160
|
/* Uses utilities: .section-bg, .text-center */
|
|
556
161
|
|
|
557
162
|
.profileSection {
|
|
163
|
+
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Horizontal layout for cards */
|
|
167
|
+
.profile-grid .profileSection {
|
|
558
168
|
width: 100%;
|
|
559
169
|
max-width: 100%;
|
|
560
170
|
box-sizing: border-box;
|
|
561
171
|
margin-bottom: var(--spacing-md);
|
|
172
|
+
box-sizing: border-box;
|
|
173
|
+
margin-bottom: var(--spacing-md);
|
|
562
174
|
}
|
|
563
175
|
|
|
564
176
|
@media (min-width: 900px) {
|
|
@@ -606,7 +218,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
606
218
|
display: flex;
|
|
607
219
|
align-items: center;
|
|
608
220
|
gap: var(--spacing-sm);
|
|
609
|
-
font-size: 1.
|
|
221
|
+
font-size: 1.1em;
|
|
610
222
|
}
|
|
611
223
|
|
|
612
224
|
.socialItem span {
|
|
@@ -622,7 +234,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
622
234
|
gap: var(--spacing-sm);
|
|
623
235
|
min-height: var(--min-touch-target);
|
|
624
236
|
padding: var(--spacing-xs);
|
|
625
|
-
border-radius: var(--border-radius-
|
|
237
|
+
border-radius: var(--border-radius-base);
|
|
626
238
|
transition: background-color var(--animation-duration) ease;
|
|
627
239
|
position: relative;
|
|
628
240
|
flex: 1;
|
|
@@ -648,7 +260,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
648
260
|
.socialIcon {
|
|
649
261
|
width: 2.5em;
|
|
650
262
|
height: 2.5em;
|
|
651
|
-
border-radius: var(--border-radius-
|
|
263
|
+
border-radius: var(--border-radius-base);
|
|
652
264
|
background: var(--color-card-bg);
|
|
653
265
|
flex-shrink: 0;
|
|
654
266
|
}
|
|
@@ -667,7 +279,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
667
279
|
font-weight: 600;
|
|
668
280
|
padding: var(--spacing-sm);
|
|
669
281
|
text-align: left;
|
|
670
|
-
color: var(--text
|
|
282
|
+
color: var(--color-text);
|
|
671
283
|
}
|
|
672
284
|
|
|
673
285
|
.stuffTable th,
|
|
@@ -678,6 +290,21 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
678
290
|
}
|
|
679
291
|
|
|
680
292
|
/* Utility-first CSS classes for layout, spacing, and responsiveness */
|
|
293
|
+
/* ===========================================
|
|
294
|
+
PROFILE GRID LAYOUT
|
|
295
|
+
=========================================== */
|
|
296
|
+
|
|
297
|
+
.profile-grid {
|
|
298
|
+
display: grid;
|
|
299
|
+
grid-template-columns: repeat(auto-fit, minmax(30em, 1fr));
|
|
300
|
+
gap: var(--spacing-lg);
|
|
301
|
+
background: var(--color-background);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.profile-header,
|
|
305
|
+
.profile-footer {
|
|
306
|
+
grid-column: 1 / -1;
|
|
307
|
+
}
|
|
681
308
|
|
|
682
309
|
.center {
|
|
683
310
|
display: flex;
|
|
@@ -714,8 +341,8 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
714
341
|
.p-md { padding: var(--spacing-md); }
|
|
715
342
|
.p-lg { padding: var(--spacing-lg); }
|
|
716
343
|
|
|
717
|
-
.rounded { border-radius: var(--border-radius); }
|
|
718
|
-
.rounded-sm { border-radius: var(--border-radius-
|
|
344
|
+
.rounded { border-radius: var(--border-radius-full); }
|
|
345
|
+
.rounded-sm { border-radius: var(--border-radius-base); }
|
|
719
346
|
|
|
720
347
|
.shadow { box-shadow: var(--box-shadow); }
|
|
721
348
|
.shadow-sm { box-shadow: var(--box-shadow-sm); }
|
|
@@ -787,7 +414,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
787
414
|
background: var(--color-primary);
|
|
788
415
|
color: white;
|
|
789
416
|
text-decoration: none;
|
|
790
|
-
border-radius: var(--border-radius-
|
|
417
|
+
border-radius: var(--border-radius-base);
|
|
791
418
|
}
|
|
792
419
|
|
|
793
420
|
.skip-links a:focus {
|
|
@@ -832,7 +459,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
832
459
|
max-width: 65ch;
|
|
833
460
|
}
|
|
834
461
|
|
|
835
|
-
.text-
|
|
462
|
+
.text-lg {
|
|
836
463
|
font-size: var(--font-size-lg);
|
|
837
464
|
line-height: var(--line-height-base);
|
|
838
465
|
}
|
|
@@ -843,7 +470,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
843
470
|
}
|
|
844
471
|
|
|
845
472
|
.text-contrast-high {
|
|
846
|
-
color: var(--text
|
|
473
|
+
color: var(--color-text);
|
|
847
474
|
font-weight: 600;
|
|
848
475
|
}
|
|
849
476
|
|
|
@@ -857,9 +484,9 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
857
484
|
|
|
858
485
|
/* High contrast text */
|
|
859
486
|
.high-contrast {
|
|
860
|
-
color: var(--text
|
|
487
|
+
color: var(--color-text);
|
|
861
488
|
background: var(--color-background);
|
|
862
|
-
border: 1px solid var(--border-
|
|
489
|
+
border: 1px solid var(--color-border-pale);
|
|
863
490
|
}
|
|
864
491
|
|
|
865
492
|
/* ===========================================
|
|
@@ -871,7 +498,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
871
498
|
min-height: var(--min-touch-target);
|
|
872
499
|
padding: var(--spacing-sm) var(--spacing-md);
|
|
873
500
|
border: 1px solid var(--color-primary);
|
|
874
|
-
border-radius: var(--border-radius-
|
|
501
|
+
border-radius: var(--border-radius-base);
|
|
875
502
|
background: var(--color-primary);
|
|
876
503
|
color: white;
|
|
877
504
|
font-weight: 600;
|
|
@@ -918,7 +545,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
918
545
|
|
|
919
546
|
/* Section Title - primary colored heading */
|
|
920
547
|
.section-title {
|
|
921
|
-
font-size: 1.
|
|
548
|
+
font-size: 1.25em;
|
|
922
549
|
font-weight: 600;
|
|
923
550
|
color: var(--color-primary);
|
|
924
551
|
margin: 0;
|
|
@@ -953,7 +580,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
953
580
|
/* Card Section Background */
|
|
954
581
|
.section-bg {
|
|
955
582
|
background: var(--color-section-bg);
|
|
956
|
-
border-radius: var(--border-radius);
|
|
583
|
+
border-radius: var(--border-radius-full);
|
|
957
584
|
box-shadow: var(--box-shadow);
|
|
958
585
|
padding: var(--spacing-md);
|
|
959
586
|
}
|
|
@@ -975,7 +602,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
975
602
|
:root {
|
|
976
603
|
/* Background and Text */
|
|
977
604
|
--color-background: white;
|
|
978
|
-
--color-text:
|
|
605
|
+
--color-text: ##1A1A1A;
|
|
979
606
|
--color-text-secondary: #666;
|
|
980
607
|
--color-text-light: #aaa;
|
|
981
608
|
--color-text-link: #3B5998;
|
|
@@ -993,7 +620,7 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
993
620
|
--color-border-dark: #777;
|
|
994
621
|
--color-border-darker: #444;
|
|
995
622
|
--color-border-light: #aaa;
|
|
996
|
-
--color-border-pale: #
|
|
623
|
+
--color-border-pale: #eee;
|
|
997
624
|
|
|
998
625
|
/* Status Colors */
|
|
999
626
|
--color-selected-bg: #8F3;
|
|
@@ -1103,11 +730,11 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
1103
730
|
/* Spacing and Sizing */
|
|
1104
731
|
--spacing-tiny: 0.05em;
|
|
1105
732
|
--spacing-small: 0.1em;
|
|
1106
|
-
--spacing-xs: 0.
|
|
1107
|
-
--spacing-sm: 0.
|
|
733
|
+
--spacing-xs: 0.5rem;
|
|
734
|
+
--spacing-sm: 0.75em;
|
|
1108
735
|
--spacing-base: 0.5em;
|
|
1109
|
-
--spacing-md:
|
|
1110
|
-
--spacing-lg:
|
|
736
|
+
--spacing-md: 1em;
|
|
737
|
+
--spacing-lg: 1.5em;
|
|
1111
738
|
--spacing-xl: 2em;
|
|
1112
739
|
--spacing-2xl: 3em;
|
|
1113
740
|
--border-width-thin: 1px;
|
|
@@ -1119,6 +746,8 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
1119
746
|
|
|
1120
747
|
/* Primary/Accent Colors */
|
|
1121
748
|
--color-primary: #7C4DFF;
|
|
749
|
+
--color-primary-alpha: rgba(124, 77, 255, 0.25);
|
|
750
|
+
--color-primary-alpha-light: rgba(124, 77, 255, 0.1);
|
|
1122
751
|
--color-secondary: #0077B6;
|
|
1123
752
|
--color-accent: #FFD600;
|
|
1124
753
|
--color-error: #B00020;
|
|
@@ -1127,6 +756,8 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
1127
756
|
/* Card/Section Backgrounds */
|
|
1128
757
|
--color-card-bg: #FFFFFF;
|
|
1129
758
|
--color-section-bg: #F5F5F5;
|
|
759
|
+
--color-zebra-stripe: rgba(0, 0, 0, 0.02);
|
|
760
|
+
--color-hover-bg: rgba(0, 0, 0, 0.05);
|
|
1130
761
|
|
|
1131
762
|
/* Shadows */
|
|
1132
763
|
--box-shadow: 0 2px 8px rgba(124,77,255,0.08);
|
|
@@ -1138,6 +769,27 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
1138
769
|
--focus-indicator-width: 3px;
|
|
1139
770
|
--animation-duration: 0.2s;
|
|
1140
771
|
--animation-duration-slow: 0.3s;
|
|
772
|
+
--min-font-size: 14px;
|
|
773
|
+
--min-line-height: 1.4;
|
|
774
|
+
--high-contrast-ratio: 7:1; /* WCAG AAA standard */
|
|
775
|
+
|
|
776
|
+
/* Overlay and Modal */
|
|
777
|
+
--overlay-bg: rgba(0, 0, 0, 0.5);
|
|
778
|
+
--z-index-modal: 9999;
|
|
779
|
+
--z-index-skip-links: 1000;
|
|
780
|
+
|
|
781
|
+
/* Opacity */
|
|
782
|
+
--opacity-disabled: 0.6;
|
|
783
|
+
|
|
784
|
+
/* Layout Values */
|
|
785
|
+
--max-width-readable: 65ch;
|
|
786
|
+
--max-width-readable-wide: 70ch;
|
|
787
|
+
|
|
788
|
+
/* Outline Offsets */
|
|
789
|
+
--outline-offset-sm: 2px;
|
|
790
|
+
|
|
791
|
+
/* Success Alpha */
|
|
792
|
+
--color-success-alpha: rgba(0, 200, 83, 0.1);
|
|
1141
793
|
}
|
|
1142
794
|
|
|
1143
795
|
/*
|
|
@@ -1147,27 +799,757 @@ button:disabled, [role="button"][aria-disabled="true"] {
|
|
|
1147
799
|
/* @import url('./themes/dark.css'); */
|
|
1148
800
|
|
|
1149
801
|
|
|
1150
|
-
/*
|
|
1151
|
-
** ------SolidOS
|
|
1152
|
-
**
|
|
802
|
+
/*
|
|
803
|
+
** ------SolidOS Utility Classes------
|
|
804
|
+
** Reusable utility classes for layout, spacing, accessibility, and components
|
|
1153
805
|
*/
|
|
1154
806
|
|
|
1155
|
-
/*
|
|
1156
|
-
|
|
1157
|
-
*/
|
|
1158
|
-
|
|
1159
|
-
|
|
807
|
+
/* ===========================================
|
|
808
|
+
ACCESSIBILITY UTILITIES (HIGH PRIORITY)
|
|
809
|
+
=========================================== */
|
|
810
|
+
|
|
811
|
+
/* Screen reader only content - hidden visually but available to assistive tech */
|
|
812
|
+
.sr-only {
|
|
813
|
+
position: absolute;
|
|
814
|
+
width: 1px;
|
|
815
|
+
height: 1px;
|
|
816
|
+
padding: 0;
|
|
817
|
+
margin: -1px;
|
|
818
|
+
overflow: hidden;
|
|
819
|
+
clip: rect(0, 0, 0, 0);
|
|
820
|
+
white-space: nowrap;
|
|
821
|
+
border: 0;
|
|
1160
822
|
}
|
|
1161
823
|
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
824
|
+
/* Visually hidden but can become visible on focus */
|
|
825
|
+
.visually-hidden {
|
|
826
|
+
position: absolute !important;
|
|
827
|
+
width: 1px !important;
|
|
828
|
+
height: 1px !important;
|
|
829
|
+
padding: 0 !important;
|
|
830
|
+
margin: -1px !important;
|
|
831
|
+
overflow: hidden !important;
|
|
832
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
833
|
+
white-space: nowrap !important;
|
|
834
|
+
border: 0 !important;
|
|
1165
835
|
}
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
836
|
+
|
|
837
|
+
.visually-hidden.focusable:focus,
|
|
838
|
+
.visually-hidden.focusable:active {
|
|
839
|
+
position: static !important;
|
|
840
|
+
width: auto !important;
|
|
841
|
+
height: auto !important;
|
|
842
|
+
padding: inherit !important;
|
|
843
|
+
margin: inherit !important;
|
|
844
|
+
overflow: visible !important;
|
|
845
|
+
clip: auto !important;
|
|
846
|
+
white-space: inherit !important;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
/* Minimum touch target for mobile accessibility (WCAG 2.5.5) */
|
|
850
|
+
.min-touch-target {
|
|
851
|
+
min-height: var(--min-touch-target);
|
|
852
|
+
min-width: var(--min-touch-target);
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
/* Reduced motion support */
|
|
856
|
+
.reduced-motion {
|
|
857
|
+
animation: none !important;
|
|
858
|
+
transition: none !important;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
/* Focus ring utility */
|
|
862
|
+
.focus-ring {
|
|
863
|
+
outline: var(--focus-ring-width) solid var(--color-primary);
|
|
864
|
+
outline-offset: var(--outline-offset-sm);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
.no-focus-ring {
|
|
868
|
+
outline: none;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
/* ARIA live regions - for dynamic content announcements */
|
|
872
|
+
.live-region {
|
|
873
|
+
position: absolute;
|
|
874
|
+
left: -10000px;
|
|
875
|
+
width: 1px;
|
|
876
|
+
height: 1px;
|
|
877
|
+
overflow: hidden;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
/* Skip links for keyboard navigation */
|
|
881
|
+
.skip-links {
|
|
882
|
+
position: absolute;
|
|
883
|
+
top: -100px;
|
|
884
|
+
left: 0;
|
|
885
|
+
z-index: var(--z-index-skip-links);
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
.skip-links a {
|
|
889
|
+
position: absolute;
|
|
890
|
+
left: var(--spacing-xs);
|
|
891
|
+
top: var(--spacing-xs);
|
|
892
|
+
padding: var(--spacing-sm);
|
|
893
|
+
background: var(--color-primary);
|
|
894
|
+
color: var(--color-background);
|
|
895
|
+
text-decoration: none;
|
|
896
|
+
border-radius: var(--border-radius-base);
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
.skip-links a:focus {
|
|
900
|
+
top: var(--spacing-xs);
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
/* ===========================================
|
|
904
|
+
LAYOUT UTILITIES
|
|
905
|
+
=========================================== */
|
|
906
|
+
|
|
907
|
+
.flex {
|
|
908
|
+
display: flex;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
.grid {
|
|
912
|
+
display: grid;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
.center {
|
|
916
|
+
display: flex;
|
|
917
|
+
justify-content: center;
|
|
918
|
+
align-items: center;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
.flex-center {
|
|
922
|
+
display: flex;
|
|
923
|
+
justify-content: center;
|
|
924
|
+
align-items: center;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
.flex-column {
|
|
928
|
+
display: flex;
|
|
929
|
+
flex-direction: column;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
.flex-column-center {
|
|
933
|
+
display: flex;
|
|
934
|
+
flex-direction: column;
|
|
935
|
+
align-items: center;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
.flex-row {
|
|
939
|
+
display: flex;
|
|
940
|
+
flex-direction: row;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
.flex-wrap {
|
|
944
|
+
flex-wrap: wrap;
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
.flex-1 {
|
|
948
|
+
flex: 1;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
.justify-start {
|
|
952
|
+
justify-content: flex-start;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
.justify-end {
|
|
956
|
+
justify-content: flex-end;
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
.justify-center {
|
|
960
|
+
justify-content: center;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
.justify-between {
|
|
964
|
+
justify-content: space-between;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
.align-start {
|
|
968
|
+
align-items: flex-start;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
.align-end {
|
|
972
|
+
align-items: flex-end;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
.align-center {
|
|
976
|
+
align-items: center;
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
/* ===========================================
|
|
980
|
+
SPACING UTILITIES
|
|
981
|
+
=========================================== */
|
|
982
|
+
|
|
983
|
+
/* Gap utilities */
|
|
984
|
+
.gap-xs { gap: var(--spacing-xs); }
|
|
985
|
+
.gap-sm { gap: var(--spacing-sm); }
|
|
986
|
+
.gap-md { gap: var(--spacing-md); }
|
|
987
|
+
.gap-lg { gap: var(--spacing-lg); }
|
|
988
|
+
.gap-xl { gap: var(--spacing-xl); }
|
|
989
|
+
|
|
990
|
+
/* Margin top */
|
|
991
|
+
.mt-0 { margin-top: 0; }
|
|
992
|
+
.mt-xs { margin-top: var(--spacing-xs); }
|
|
993
|
+
.mt-sm { margin-top: var(--spacing-sm); }
|
|
994
|
+
.mt-md { margin-top: var(--spacing-md); }
|
|
995
|
+
.mt-lg { margin-top: var(--spacing-lg); }
|
|
996
|
+
.mt-xl { margin-top: var(--spacing-xl); }
|
|
997
|
+
|
|
998
|
+
/* Margin bottom */
|
|
999
|
+
.mb-0 { margin-bottom: 0; }
|
|
1000
|
+
.mb-xs { margin-bottom: var(--spacing-xs); }
|
|
1001
|
+
.mb-sm { margin-bottom: var(--spacing-sm); }
|
|
1002
|
+
.mb-md { margin-bottom: var(--spacing-md); }
|
|
1003
|
+
.mb-lg { margin-bottom: var(--spacing-lg); }
|
|
1004
|
+
.mb-xl { margin-bottom: var(--spacing-xl); }
|
|
1005
|
+
|
|
1006
|
+
/* Margin left */
|
|
1007
|
+
.ml-0 { margin-left: 0; }
|
|
1008
|
+
.ml-xs { margin-left: var(--spacing-xs); }
|
|
1009
|
+
.ml-sm { margin-left: var(--spacing-sm); }
|
|
1010
|
+
.ml-md { margin-left: var(--spacing-md); }
|
|
1011
|
+
.ml-lg { margin-left: var(--spacing-lg); }
|
|
1012
|
+
|
|
1013
|
+
/* Margin right */
|
|
1014
|
+
.mr-0 { margin-right: 0; }
|
|
1015
|
+
.mr-xs { margin-right: var(--spacing-xs); }
|
|
1016
|
+
.mr-sm { margin-right: var(--spacing-sm); }
|
|
1017
|
+
.mr-md { margin-right: var(--spacing-md); }
|
|
1018
|
+
.mr-lg { margin-right: var(--spacing-lg); }
|
|
1019
|
+
|
|
1020
|
+
/* Margin horizontal (left + right) */
|
|
1021
|
+
.mx-auto { margin-left: auto; margin-right: auto; }
|
|
1022
|
+
.mx-xs { margin-left: var(--spacing-xs); margin-right: var(--spacing-xs); }
|
|
1023
|
+
.mx-sm { margin-left: var(--spacing-sm); margin-right: var(--spacing-sm); }
|
|
1024
|
+
.mx-md { margin-left: var(--spacing-md); margin-right: var(--spacing-md); }
|
|
1025
|
+
|
|
1026
|
+
/* Margin vertical (top + bottom) */
|
|
1027
|
+
.my-xs { margin-top: var(--spacing-xs); margin-bottom: var(--spacing-xs); }
|
|
1028
|
+
.my-sm { margin-top: var(--spacing-sm); margin-bottom: var(--spacing-sm); }
|
|
1029
|
+
.my-md { margin-top: var(--spacing-md); margin-bottom: var(--spacing-md); }
|
|
1030
|
+
|
|
1031
|
+
/* Padding */
|
|
1032
|
+
.p-0 { padding: 0; }
|
|
1033
|
+
.p-xs { padding: var(--spacing-xs); }
|
|
1034
|
+
.p-sm { padding: var(--spacing-sm); }
|
|
1035
|
+
.p-md { padding: var(--spacing-md); }
|
|
1036
|
+
.p-lg { padding: var(--spacing-lg); }
|
|
1037
|
+
.p-xl { padding: var(--spacing-xl); }
|
|
1038
|
+
|
|
1039
|
+
/* Padding top */
|
|
1040
|
+
.pt-xs { padding-top: var(--spacing-xs); }
|
|
1041
|
+
.pt-sm { padding-top: var(--spacing-sm); }
|
|
1042
|
+
.pt-md { padding-top: var(--spacing-md); }
|
|
1043
|
+
.pt-lg { padding-top: var(--spacing-lg); }
|
|
1044
|
+
|
|
1045
|
+
/* Padding bottom */
|
|
1046
|
+
.pb-xs { padding-bottom: var(--spacing-xs); }
|
|
1047
|
+
.pb-sm { padding-bottom: var(--spacing-sm); }
|
|
1048
|
+
.pb-md { padding-bottom: var(--spacing-md); }
|
|
1049
|
+
.pb-lg { padding-bottom: var(--spacing-lg); }
|
|
1050
|
+
|
|
1051
|
+
/* Padding horizontal */
|
|
1052
|
+
.px-xs { padding-left: var(--spacing-xs); padding-right: var(--spacing-xs); }
|
|
1053
|
+
.px-sm { padding-left: var(--spacing-sm); padding-right: var(--spacing-sm); }
|
|
1054
|
+
.px-md { padding-left: var(--spacing-md); padding-right: var(--spacing-md); }
|
|
1055
|
+
.px-lg { padding-left: var(--spacing-lg); padding-right: var(--spacing-lg); }
|
|
1056
|
+
|
|
1057
|
+
/* Padding vertical */
|
|
1058
|
+
.py-xs { padding-top: var(--spacing-xs); padding-bottom: var(--spacing-xs); }
|
|
1059
|
+
.py-sm { padding-top: var(--spacing-sm); padding-bottom: var(--spacing-sm); }
|
|
1060
|
+
.py-md { padding-top: var(--spacing-md); padding-bottom: var(--spacing-md); }
|
|
1061
|
+
.py-lg { padding-top: var(--spacing-lg); padding-bottom: var(--spacing-lg); }
|
|
1062
|
+
|
|
1063
|
+
/* ===========================================
|
|
1064
|
+
TEXT UTILITIES
|
|
1065
|
+
=========================================== */
|
|
1066
|
+
|
|
1067
|
+
.text-center { text-align: center; }
|
|
1068
|
+
.text-left { text-align: left; }
|
|
1069
|
+
.text-right { text-align: right; }
|
|
1070
|
+
|
|
1071
|
+
.text-secondary { color: var(--color-text-secondary); }
|
|
1072
|
+
.text-muted { color: var(--color-text-muted); }
|
|
1073
|
+
.text-primary { color: var(--color-primary); }
|
|
1074
|
+
.text-error { color: var(--color-error); }
|
|
1075
|
+
.text-success { color: var(--color-success); }
|
|
1076
|
+
|
|
1077
|
+
.text-bold { font-weight: var(--font-weight-bold); }
|
|
1078
|
+
.text-normal { font-weight: var(--font-weight-normal); }
|
|
1079
|
+
|
|
1080
|
+
.text-sm { font-size: var(--font-size-sm); }
|
|
1081
|
+
.text-lg { font-size: var(--font-size-lg); }
|
|
1082
|
+
.text-xl { font-size: var(--font-size-xl); }
|
|
1083
|
+
|
|
1084
|
+
/* Text that respects accessibility guidelines */
|
|
1085
|
+
.text-readable {
|
|
1086
|
+
line-height: var(--line-height-base);
|
|
1087
|
+
max-width: var(--max-width-readable);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
.text-scale-friendly {
|
|
1091
|
+
line-height: var(--line-height-base);
|
|
1092
|
+
max-width: var(--max-width-readable-wide);
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
/* Text with minimum font size safety */
|
|
1096
|
+
.text-small {
|
|
1097
|
+
font-size: max(var(--font-size-sm), var(--min-font-size));
|
|
1098
|
+
line-height: var(--min-line-height);
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
.text-large {
|
|
1102
|
+
font-size: var(--font-size-lg);
|
|
1103
|
+
line-height: var(--line-height-base);
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
/* Text overflow handling */
|
|
1107
|
+
.text-truncate {
|
|
1108
|
+
white-space: nowrap;
|
|
1109
|
+
text-overflow: ellipsis;
|
|
1110
|
+
overflow: hidden;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
.text-wrap-anywhere {
|
|
1114
|
+
overflow-wrap: anywhere;
|
|
1115
|
+
word-break: break-word;
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
.text-nowrap {
|
|
1119
|
+
white-space: nowrap;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
/* High contrast text for accessibility */
|
|
1123
|
+
.text-contrast-high {
|
|
1169
1124
|
color: var(--color-text);
|
|
1170
|
-
font-
|
|
1125
|
+
font-weight: var(--font-weight-bold);
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
/* Better focus for text elements */
|
|
1129
|
+
.focusable-text:focus {
|
|
1130
|
+
background-color: var(--color-primary-alpha-light);
|
|
1131
|
+
outline: var(--focus-ring-width) solid var(--color-primary);
|
|
1132
|
+
outline-offset: var(--outline-offset-sm);
|
|
1133
|
+
border-radius: var(--outline-offset-sm);
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
/* High contrast box */
|
|
1137
|
+
.high-contrast {
|
|
1138
|
+
color: var(--color-text);
|
|
1139
|
+
background: var(--color-background);
|
|
1140
|
+
border: var(--border-width-thin) solid var(--color-border-pale);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
/* ===========================================
|
|
1144
|
+
BORDER & SHADOW UTILITIES
|
|
1145
|
+
=========================================== */
|
|
1146
|
+
|
|
1147
|
+
.rounded { border-radius: var(--border-radius-full); }
|
|
1148
|
+
.rounded-sm { border-radius: var(--border-radius-base); }
|
|
1149
|
+
.rounded-lg { border-radius: var(--border-radius-lg); }
|
|
1150
|
+
.rounded-none { border-radius: 0; }
|
|
1151
|
+
|
|
1152
|
+
.shadow { box-shadow: var(--box-shadow); }
|
|
1153
|
+
.shadow-sm { box-shadow: var(--box-shadow-sm); }
|
|
1154
|
+
.shadow-none { box-shadow: none; }
|
|
1155
|
+
|
|
1156
|
+
.border { border: var(--border-width-thin) solid var(--color-border); }
|
|
1157
|
+
.border-dark { border: var(--border-width-thin) solid var(--color-border-dark); }
|
|
1158
|
+
.border-light { border: var(--border-width-thin) solid var(--color-border-light); }
|
|
1159
|
+
.border-none { border: none; }
|
|
1160
|
+
|
|
1161
|
+
/* ===========================================
|
|
1162
|
+
BACKGROUND UTILITIES
|
|
1163
|
+
=========================================== */
|
|
1164
|
+
|
|
1165
|
+
.bg-primary {
|
|
1166
|
+
background: var(--color-primary);
|
|
1167
|
+
color: var(--color-background);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
.bg-card {
|
|
1171
|
+
background: var(--color-card-bg);
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
.bg-section {
|
|
1175
|
+
background: var(--color-section-bg);
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
.bg-transparent {
|
|
1179
|
+
background: transparent;
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
.bg-white {
|
|
1183
|
+
background: var(--color-background);
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
/* ===========================================
|
|
1187
|
+
BUTTON COMPONENTS
|
|
1188
|
+
=========================================== */
|
|
1189
|
+
|
|
1190
|
+
/* Primary button */
|
|
1191
|
+
.btn-primary {
|
|
1192
|
+
min-height: var(--min-touch-target);
|
|
1193
|
+
padding: var(--spacing-sm) var(--spacing-md);
|
|
1194
|
+
border: var(--border-width-thin) solid var(--color-primary);
|
|
1195
|
+
border-radius: var(--border-radius-base);
|
|
1196
|
+
background: var(--color-primary);
|
|
1197
|
+
color: var(--color-background);
|
|
1198
|
+
font-weight: var(--font-weight-bold);
|
|
1199
|
+
cursor: pointer;
|
|
1200
|
+
transition: all var(--animation-duration) ease;
|
|
1201
|
+
text-decoration: none;
|
|
1202
|
+
display: inline-flex;
|
|
1203
|
+
align-items: center;
|
|
1204
|
+
justify-content: center;
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
.btn-primary:hover {
|
|
1208
|
+
background: color-mix(in srgb, var(--color-primary) 85%, black);
|
|
1209
|
+
box-shadow: 0 2px 4px var(--color-primary-alpha);
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
.btn-primary:active {
|
|
1213
|
+
box-shadow: 0 1px 2px var(--color-primary-alpha);
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
.btn-primary:focus,
|
|
1217
|
+
.btn-primary:focus-visible {
|
|
1218
|
+
outline: var(--focus-indicator-width) solid var(--color-primary);
|
|
1219
|
+
outline-offset: var(--outline-offset-sm);
|
|
1220
|
+
box-shadow: 0 0 0 var(--focus-ring-width) var(--color-background), 0 0 0 calc(var(--focus-ring-width) + var(--focus-indicator-width)) var(--color-primary-alpha);
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
.btn-primary:disabled {
|
|
1224
|
+
opacity: var(--opacity-disabled);
|
|
1225
|
+
cursor: not-allowed;
|
|
1226
|
+
transform: none;
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
/* Secondary button */
|
|
1230
|
+
.btn-secondary {
|
|
1231
|
+
min-height: var(--min-touch-target);
|
|
1232
|
+
padding: var(--spacing-sm) var(--spacing-md);
|
|
1233
|
+
border: var(--border-width-thin) solid var(--color-secondary);
|
|
1234
|
+
border-radius: var(--border-radius-base);
|
|
1235
|
+
background: var(--color-secondary);
|
|
1236
|
+
color: var(--color-background);
|
|
1237
|
+
font-weight: var(--font-weight-bold);
|
|
1238
|
+
cursor: pointer;
|
|
1239
|
+
transition: all var(--animation-duration) ease;
|
|
1240
|
+
text-decoration: none;
|
|
1241
|
+
display: inline-flex;
|
|
1242
|
+
align-items: center;
|
|
1243
|
+
justify-content: center;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
.btn-secondary:hover {
|
|
1247
|
+
background: color-mix(in srgb, var(--color-secondary) 85%, black);
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
.btn-secondary:disabled {
|
|
1251
|
+
opacity: var(--opacity-disabled);
|
|
1252
|
+
cursor: not-allowed;
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
/* Outline button */
|
|
1256
|
+
.btn-outline {
|
|
1257
|
+
min-height: var(--min-touch-target);
|
|
1258
|
+
padding: var(--spacing-sm) var(--spacing-md);
|
|
1259
|
+
border: var(--border-width-medium) solid var(--color-primary);
|
|
1260
|
+
border-radius: var(--border-radius-base);
|
|
1261
|
+
background: transparent;
|
|
1262
|
+
color: var(--color-primary);
|
|
1263
|
+
font-weight: var(--font-weight-bold);
|
|
1264
|
+
cursor: pointer;
|
|
1265
|
+
transition: all var(--animation-duration) ease;
|
|
1266
|
+
text-decoration: none;
|
|
1267
|
+
display: inline-flex;
|
|
1268
|
+
align-items: center;
|
|
1269
|
+
justify-content: center;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
.btn-outline:hover {
|
|
1273
|
+
background: var(--color-primary);
|
|
1274
|
+
color: var(--color-background);
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
.btn-outline:disabled {
|
|
1278
|
+
opacity: var(--opacity-disabled);
|
|
1279
|
+
cursor: not-allowed;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
/* Transparent button (for solid-ui integration) */
|
|
1283
|
+
.btn-transparent {
|
|
1284
|
+
background-color: transparent;
|
|
1285
|
+
border: none;
|
|
1286
|
+
cursor: pointer;
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
.btn-transparent:hover {
|
|
1290
|
+
background-color: var(--color-hover-bg);
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
/* Button focus state */
|
|
1294
|
+
.action-button-focus:focus,
|
|
1295
|
+
.action-button-focus:focus-visible {
|
|
1296
|
+
outline: var(--focus-indicator-width) solid var(--color-primary) !important;
|
|
1297
|
+
outline-offset: var(--outline-offset-sm) !important;
|
|
1298
|
+
box-shadow: 0 0 0 var(--focus-ring-width) var(--color-background), 0 0 0 calc(var(--focus-ring-width) + var(--focus-indicator-width)) var(--color-primary-alpha) !important;
|
|
1299
|
+
z-index: 1;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
/* ===========================================
|
|
1303
|
+
CARD & SECTION COMPONENTS
|
|
1304
|
+
=========================================== */
|
|
1305
|
+
|
|
1306
|
+
.module-card {
|
|
1307
|
+
background: var(--color-card-bg);
|
|
1308
|
+
border-radius: var(--border-radius-full);
|
|
1309
|
+
box-shadow: var(--box-shadow);
|
|
1310
|
+
padding: var(--spacing-lg);
|
|
1311
|
+
margin-bottom: var(--spacing-lg);
|
|
1312
|
+
width: 100%;
|
|
1313
|
+
max-width: 100%;
|
|
1314
|
+
box-sizing: border-box;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
.module-header {
|
|
1318
|
+
text-align: center;
|
|
1319
|
+
margin-bottom: var(--spacing-md);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
.section-centered {
|
|
1323
|
+
display: flex;
|
|
1324
|
+
flex-direction: column;
|
|
1325
|
+
align-items: center;
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
.section-bg {
|
|
1329
|
+
background: var(--color-section-bg);
|
|
1330
|
+
border-radius: var(--border-radius-full);
|
|
1331
|
+
box-shadow: var(--box-shadow);
|
|
1332
|
+
padding: var(--spacing-md);
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
.section-title {
|
|
1336
|
+
font-size: var(--font-size-xl);
|
|
1337
|
+
font-weight: var(--font-weight-bold);
|
|
1338
|
+
color: var(--color-primary);
|
|
1339
|
+
margin: 0;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
/* ===========================================
|
|
1343
|
+
LIST & TABLE UTILITIES
|
|
1344
|
+
=========================================== */
|
|
1345
|
+
|
|
1346
|
+
.list-reset {
|
|
1347
|
+
list-style: none;
|
|
1348
|
+
padding: 0;
|
|
1349
|
+
margin: 0;
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
.zebra-stripe tr:nth-child(even),
|
|
1353
|
+
.zebra-stripe > *:nth-child(even) {
|
|
1354
|
+
background-color: var(--color-zebra-stripe);
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
/* ===========================================
|
|
1358
|
+
DISPLAY & VISIBILITY UTILITIES
|
|
1359
|
+
=========================================== */
|
|
1360
|
+
|
|
1361
|
+
.block { display: block; }
|
|
1362
|
+
.inline { display: inline; }
|
|
1363
|
+
.inline-block { display: inline-block; }
|
|
1364
|
+
.hidden { display: none; }
|
|
1365
|
+
.visible { visibility: visible; }
|
|
1366
|
+
.invisible { visibility: hidden; }
|
|
1367
|
+
|
|
1368
|
+
/* ===========================================
|
|
1369
|
+
WIDTH & HEIGHT UTILITIES
|
|
1370
|
+
=========================================== */
|
|
1371
|
+
|
|
1372
|
+
.w-full { width: 100%; }
|
|
1373
|
+
.w-auto { width: auto; }
|
|
1374
|
+
.h-full { height: 100%; }
|
|
1375
|
+
.h-auto { height: auto; }
|
|
1376
|
+
.max-w-full { max-width: 100%; }
|
|
1377
|
+
|
|
1378
|
+
/* ===========================================
|
|
1379
|
+
POSITION UTILITIES
|
|
1380
|
+
=========================================== */
|
|
1381
|
+
|
|
1382
|
+
.relative { position: relative; }
|
|
1383
|
+
.absolute { position: absolute; }
|
|
1384
|
+
.fixed { position: fixed; }
|
|
1385
|
+
.sticky { position: sticky; }
|
|
1386
|
+
|
|
1387
|
+
/* ===========================================
|
|
1388
|
+
LOADING & STATUS INDICATORS
|
|
1389
|
+
=========================================== */
|
|
1390
|
+
|
|
1391
|
+
.loading-text {
|
|
1392
|
+
color: var(--color-primary);
|
|
1393
|
+
text-align: center;
|
|
1394
|
+
margin: var(--spacing-md) 0;
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
.loading-spinner {
|
|
1398
|
+
width: var(--min-touch-target);
|
|
1399
|
+
height: var(--min-touch-target);
|
|
1400
|
+
border: var(--focus-indicator-width) solid var(--color-border-pale);
|
|
1401
|
+
border-top: var(--focus-indicator-width) solid var(--color-primary);
|
|
1402
|
+
border-radius: var(--border-radius-full);
|
|
1403
|
+
animation: spin var(--animation-duration-slow) linear infinite;
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
@keyframes spin {
|
|
1407
|
+
0% { transform: rotate(0deg); }
|
|
1408
|
+
100% { transform: rotate(360deg); }
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
/* ===========================================
|
|
1412
|
+
ARIA ROLE STYLING
|
|
1413
|
+
=========================================== */
|
|
1414
|
+
|
|
1415
|
+
[role="alert"] {
|
|
1416
|
+
padding: var(--spacing-md);
|
|
1417
|
+
border: var(--border-width-medium) solid var(--color-error);
|
|
1418
|
+
border-radius: var(--border-radius-base);
|
|
1419
|
+
background-color: var(--color-primary-alpha-light);
|
|
1420
|
+
margin: var(--spacing-md) 0;
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
[role="status"] {
|
|
1424
|
+
padding: var(--spacing-md);
|
|
1425
|
+
border: var(--border-width-medium) solid var(--color-success);
|
|
1426
|
+
border-radius: var(--border-radius-base);
|
|
1427
|
+
background-color: var(--color-success-alpha);
|
|
1428
|
+
margin: var(--spacing-md) 0;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
/* ===========================================
|
|
1432
|
+
FOCUS TRAP FOR MODALS
|
|
1433
|
+
=========================================== */
|
|
1434
|
+
|
|
1435
|
+
.focus-trap {
|
|
1436
|
+
position: fixed;
|
|
1437
|
+
top: 0;
|
|
1438
|
+
left: 0;
|
|
1439
|
+
width: 100%;
|
|
1440
|
+
height: 100%;
|
|
1441
|
+
z-index: var(--z-index-modal);
|
|
1442
|
+
background: var(--overlay-bg);
|
|
1443
|
+
display: flex;
|
|
1444
|
+
justify-content: center;
|
|
1445
|
+
align-items: center;
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
/* ===========================================
|
|
1449
|
+
MEDIA QUERIES
|
|
1450
|
+
=========================================== */
|
|
1451
|
+
|
|
1452
|
+
/* Respect reduced motion preferences */
|
|
1453
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1454
|
+
.loading-spinner {
|
|
1455
|
+
animation: none;
|
|
1456
|
+
border-top-color: var(--color-primary);
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
*,
|
|
1460
|
+
*::before,
|
|
1461
|
+
*::after {
|
|
1462
|
+
animation-duration: 0.01ms !important;
|
|
1463
|
+
animation-iteration-count: 1 !important;
|
|
1464
|
+
transition-duration: 0.01ms !important;
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
/* High contrast mode support */
|
|
1469
|
+
@media (prefers-contrast: high) {
|
|
1470
|
+
.btn-primary,
|
|
1471
|
+
.btn-secondary,
|
|
1472
|
+
.btn-outline {
|
|
1473
|
+
border-width: var(--border-width-medium);
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
.module-card,
|
|
1477
|
+
.section-bg {
|
|
1478
|
+
border: var(--border-width-medium) solid var(--color-border-dark);
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
/* Mobile minimum font size */
|
|
1483
|
+
@media screen and (max-width: 768px) {
|
|
1484
|
+
html {
|
|
1485
|
+
font-size: max(16px, 1rem);
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
/* Smooth scroll when no motion preference */
|
|
1490
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1491
|
+
html {
|
|
1492
|
+
scroll-behavior: smooth;
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
/*
|
|
1497
|
+
** ------SolidOS Styles------
|
|
1498
|
+
**
|
|
1499
|
+
*/
|
|
1500
|
+
|
|
1501
|
+
/* I couldn't find the code for the collapse image. this is a quick work around
|
|
1502
|
+
to make the collapsing easier to use ( the triangles dont jump 20 pixels). ~cm2
|
|
1503
|
+
*/
|
|
1504
|
+
img[title="Hide details."] {
|
|
1505
|
+
float: left;
|
|
1506
|
+
}
|
|
1507
|
+
|
|
1508
|
+
html, body {
|
|
1509
|
+
margin: 0;
|
|
1510
|
+
padding: 0;
|
|
1511
|
+
font-family: var(--font-family-base);
|
|
1512
|
+
font-size: var(--font-size-base);
|
|
1513
|
+
line-height: var(--line-height-base);
|
|
1514
|
+
background: var(--color-background);
|
|
1515
|
+
color: var(--color-text);
|
|
1516
|
+
-webkit-font-smoothing: antialiased;
|
|
1517
|
+
-moz-osx-font-smoothing: grayscale;
|
|
1518
|
+
text-rendering: optimizeLegibility;
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
/* Improved heading hierarchy */
|
|
1522
|
+
h1, h2, h3, h4, h5, h6 {
|
|
1523
|
+
color: var(--color-primary);
|
|
1524
|
+
font-weight: 600;
|
|
1525
|
+
line-height: var(--line-height-tight);
|
|
1526
|
+
margin-top: 0;
|
|
1527
|
+
margin-bottom: var(--spacing-sm);
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
h1 { font-size: 2em; } /* 32px */
|
|
1531
|
+
h2 { font-size: 1.5em; } /* 24px */
|
|
1532
|
+
h3 { font-size: 1.25em; } /* 20px */
|
|
1533
|
+
h4 { font-size: 1.125em; }/* 18px */
|
|
1534
|
+
h5, h6 { font-size: 1em; }/* 16px */
|
|
1535
|
+
|
|
1536
|
+
/* Better paragraph spacing */
|
|
1537
|
+
p {
|
|
1538
|
+
margin-bottom: var(--spacing-md);
|
|
1539
|
+
line-height: var(--line-height-base);
|
|
1540
|
+
max-width: 65ch; /* Optimal reading width */
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
/* Improved link accessibility */
|
|
1544
|
+
a {
|
|
1545
|
+
color: var(--color-primary);
|
|
1546
|
+
text-decoration: underline;
|
|
1547
|
+
text-underline-offset: 0.125em;
|
|
1548
|
+
text-decoration-thickness: 0.0625em;
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
a:hover, a:focus {
|
|
1552
|
+
text-decoration-thickness: 0.125em;
|
|
1171
1553
|
}
|
|
1172
1554
|
|
|
1173
1555
|
/* Main page elements in databrowser.html */
|