Web platform for sharing free data for ML and research

By using this site, you agree to have cookies stored on your device, strictly for functional purposes, such as storing your session and preferences.

Dismiss

 style.css

View raw Download
text/plain • 9.7 kiB
ASCII text
        
            
1
@import "/static/efficient-ui/MASTER.css";
2
3
:root {
4
--gap-navbar: 1rem;
5
--width-navbar-button: 0;
6
--text-soft: #000000C0;
7
--text-softer: #0000009A;
8
--text-faint: #00000066;
9
--text-softest: #00000033;
10
--color-star: #FFC107;
11
--color-shape-label: #0097A7; --color-shape-label-text: #ffffff;
12
--shadow-card-inset: inset 0 3px 6px -4px rgba(0, 0, 0, 0.12), inset 0 3px 6px 0 rgba(0, 0, 0, 0.24), inset 0 1px 4px 0 rgba(0, 0, 0, 0.12);
13
/*view-transition-name: root;*/
14
}
15
16
nav {
17
/*view-transition-name: nav;*/
18
}
19
20
p {
21
color: var(--text-soft);
22
}
23
24
iconify-icon {
25
/* Material design icons are done in 24px, so we scale them to 1.5 as the default font size is 16px */
26
display: inline-block;
27
width: 1em;
28
height: 1em;
29
font-size: 1.5em;
30
}
31
32
:is(#shape-selector, #shape-options) > button > iconify-icon {
33
font-size: 2rem;
34
}
35
36
#annotation-zone, .annotation-zone {
37
position: relative;
38
user-select: none;
39
}
40
41
#annotation-image, .annotation-image {
42
user-drag: none;
43
-webkit-user-drag: none;
44
image-rendering: pixelated;
45
}
46
47
#annotation-zone > svg, .annotation-zone > svg {
48
z-index: 1;
49
position: absolute;
50
top: 0;
51
left: 0;
52
width: 100%;
53
height: 100%;
54
}
55
56
.annotation-ruler {
57
z-index: 2;
58
position: absolute;
59
top: 0;
60
left: 0;
61
background: var(--color-accent);
62
display: none;
63
}
64
65
#annotation-ruler-horizontal, #annotation-ruler-horizontal-secondary {
66
height: 1px;
67
width: 100%;
68
}
69
70
#annotation-ruler-vertical, #annotation-ruler-vertical-secondary {
71
width: 1px;
72
height: 100%;
73
}
74
75
.shape {
76
stroke: var(--color-accent);
77
fill: var(--color-accent);
78
fill-opacity: 0.1;
79
stroke-width: 2px;
80
vector-effect: non-scaling-stroke;
81
pointer-events: auto;
82
transition: filter 0.25s cubic-bezier(0.61, 1, 0.88, 1),
83
fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
84
stroke-width 0.25s cubic-bezier(0.61, 1, 0.88, 1);
85
stroke-linecap: square;
86
stroke-linejoin: miter;
87
}
88
89
.shape-polyline {
90
fill: none;
91
}
92
93
.shape-point {
94
stroke: var(--color-accent);
95
stroke-width: 2px;
96
fill-opacity: 1;
97
r: 2;
98
transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
99
stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
100
filter 0.25s cubic-bezier(0.61, 1, 0.88, 1);
101
}
102
103
.shape.selected {
104
fill-opacity: 0.2;
105
stroke-width: 4px;
106
filter: drop-shadow(0 0 2px var(--text-soft));
107
}
108
109
.shape-point.selected {
110
fill-opacity: 1;
111
r: 6;
112
stroke-width: 6px;
113
}
114
115
.shape-container, .shape-container-viewonly {
116
pointer-events: none;
117
}
118
119
#annotation-helper-message {
120
min-height: 2lh;
121
}
122
123
.shape-container-viewonly > .shape, .thumbnail-list > li .shape {
124
fill: var(--color-info);
125
stroke: var(--color-info);
126
fill-opacity: 0;
127
stroke-opacity: 0;
128
transition: fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
129
stroke-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1);
130
}
131
132
.shape-container-viewonly > .shape-polyline, .thumbnail-list > li .shape-polyline {
133
fill: none;
134
}
135
136
.shape-container-viewonly > .shape-point, .thumbnail-list > li .shape-point {
137
stroke: var(--color-info);
138
transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
139
stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
140
filter 0.25s cubic-bezier(0.61, 1, 0.88, 1);
141
}
142
143
.shape-label {
144
position: absolute;
145
font-weight: 500;
146
color: var(--color-shape-label-text) !important;
147
pointer-events: auto;
148
height: 28px;
149
padding-left: 8px;
150
padding-right: 8px;
151
display: flex;
152
align-items: center;
153
justify-content: center;
154
background: var(--color-shape-label);
155
width: max-content;
156
box-shadow: var(--shadow-button);
157
/* top-left corner is square to point to the shape */
158
border-radius: 0 16px 16px 16px;
159
opacity: 0;
160
transition: opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
161
transform 0.375s cubic-bezier(0.16, 1, 0.3, 1);
162
transform: scale(0);
163
transform-origin: top left;
164
z-index: 3;
165
text-decoration: none;
166
}
167
168
.shape-label:hover {
169
text-decoration: underline;
170
}
171
172
/* Only show region parts when checkbox is checked */
173
#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-label {
174
opacity: 1;
175
transform: scale(1);
176
}
177
178
/* Hide points with a bubble */
179
#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-container-viewonly > .shape-point:has(+ foreignObject) {
180
r: 0;
181
border-width: 0;
182
}
183
184
#annotation-zone:has(+ x-buttonbox #show-shapes:checked) > .shape-container-viewonly > .shape {
185
fill-opacity: 0.1;
186
stroke-opacity: 1;
187
}
188
189
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) .shape {
190
fill-opacity: 0.2;
191
stroke-opacity: 1;
192
}
193
194
/* Disabled for now, until there is more navigation that would benefit from transitions */
195
/*
196
@view-transition {
197
navigation: auto;
198
}
199
200
@keyframes move-out {
201
from {
202
transform: translateX(0%);
203
}
204
to {
205
transform: translateX(-100%);
206
}
207
}
208
209
@keyframes move-in {
210
from {
211
transform: translateX(100%);
212
}
213
to {
214
transform: translateX(0%);
215
}
216
}
217
218
@media (prefers-reduced-motion: no-preference) {
219
::view-transition-old(root),
220
::view-transition-new(root) {
221
animation-duration: 0.25s;
222
animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
223
}
224
225
::view-transition-old(root) {
226
animation-name: move-out;
227
}
228
229
::view-transition-new(root) {
230
animation-name: move-in;
231
}
232
}
233
*/
234
235
.multi-select, .single-select {
236
display: flex;
237
flex-flow: column nowrap;
238
overflow-y: scroll;
239
box-shadow: var(--shadow-card-inset);
240
padding: 16px;
241
gap: 8px;
242
}
243
244
.licence-selection, .image-type-selection {
245
display: flex;
246
flex-flow: column nowrap;
247
}
248
249
.licence-selection-info, .image-type-selection-info {
250
margin-left: calc(var(--size-checkbox) + var(--gap-label-checkbox));
251
/* Align with the checkbox above */
252
}
253
254
.licence-selection-info > p, .image-type-selection-info > p {
255
font-weight: 300;
256
}
257
258
.licence-logo {
259
width: 128px;
260
float: right;
261
margin-left: 1ch;
262
}
263
264
.licence-title, .image-type-title {
265
display: flex;
266
justify-content: space-between;
267
width: 100%;
268
}
269
270
.licence-title > .licence-name, .image-type-title > .image-type-name {
271
font: var(--h5-font);
272
font-weight: 400;
273
}
274
275
.icon-explainer {
276
display: grid;
277
gap: 4px 8px;
278
grid-template-columns: auto 1fr;
279
align-items: center;
280
}
281
282
.icon-explainer *:nth-child(even) {
283
font-weight: 300;
284
}
285
286
.required-asterisk::after {
287
content: "*";
288
color: var(--color-error);
289
}
290
291
small {
292
/* BIG :D */
293
font-size: 1em;
294
}
295
296
#pagination {
297
display: flex;
298
gap: 1em;
299
justify-content: center;
300
align-items: center;
301
font-size: 1.5em;
302
font-weight: 600;
303
flex: 1 0 auto;
304
}
305
306
#pagination > a {
307
text-decoration: none;
308
color: var(--color-accent-1);
309
}
310
311
#pagination-options > form {
312
align-items: center;
313
display: flex;
314
gap: 1em;
315
}
316
317
#pagination-options {
318
justify-content: center;
319
align-items: center;
320
gap: 1em;
321
width: 100%;
322
}
323
324
.thumbnail-list {
325
list-style: none;
326
margin: 0 !important;
327
display: grid;
328
grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
329
gap: 16px;
330
}
331
332
.thumbnail-list > li {
333
transition: transform 0.25s cubic-bezier(0.61, 1, 0.88, 1),
334
box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1);
335
box-shadow: var(--shadow-card);
336
background: var(--color-card);
337
}
338
339
.thumbnail-list > li > a, .thumbnail-list > li {
340
display: flex;
341
flex-direction: column;
342
justify-content: space-between;
343
height: 100%;
344
}
345
346
.thumbnail-list > li > .list-more {
347
display: flex;
348
justify-content: space-between;
349
align-items: center;
350
padding: 8px;
351
}
352
353
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) {
354
position: relative;
355
transform: scale(1.5);
356
z-index: 1;
357
box-shadow: var(--shadow-card), 0 4px 32px rgba(0, 0, 0, 0.12), 0 4px 16px rgba(0, 0, 0, 0.08);
358
}
359
360
.thumbnail-list > li .list-detail {
361
padding: 8px;
362
display: block;
363
}
364
365
a.button {
366
text-decoration: none;
367
}
368
369
dt {
370
font-weight: 600;
371
}
372
373
dd {
374
margin-left: 40px;
375
}
376
377
#mobile-navbar {
378
display: none;
379
}
380
381
@media screen and (max-width: 576px) {
382
#mobile-navbar {
383
display: flex;
384
}
385
#desktop-navbar {
386
display: none;
387
}
388
}
389
390
#hamburger > nav {
391
display: flex;
392
flex-direction: column;
393
gap: 1em;
394
padding: var(--padding-card);
395
padding-top: var(--padding-card-top);
396
box-shadow: var(--shadow-card);
397
background: var(--color-card);
398
justify-content: space-between;
399
width: clamp(240px, calc(100vw - 56px), 448px);
400
}
401
402
#hamburger > nav > ul {
403
display: flex;
404
flex-direction: column;
405
gap: 1em;
406
margin: 0;
407
}
408
409
#hamburger > nav > ul > li {
410
display: flex;
411
gap: var(--gap-label-checkbox);
412
align-items: center;
413
margin: 0;
414
}
415
416
#hamburger > nav > ul > li > a {
417
text-decoration: none;
418
color: var(--color-card-text);
419
}
420
421
.star-rating-container {
422
display: flex;
423
flex-direction: row-reverse;
424
gap: 0.5ch;
425
font-size: 1.25em;
426
align-items: center;
427
justify-content: flex-end; /* In this case, it means LEFT, not right, because of the row-reverse */
428
}
429
430
.star-rating-container > input {
431
width: 0 !important;
432
height: 0 !important;
433
visibility: hidden;
434
}
435
436
.star-rating-container > label {
437
cursor: pointer;
438
color: var(--text-softest);
439
transition: color 0.25s cubic-bezier(0.37, 0, 0.63, 1),
440
filter 0.25s cubic-bezier(0.37, 0, 0.63, 1);
441
}
442
443
.star-rating-container > label:hover,
444
.star-rating-container > label:hover ~ label {
445
color: var(--color-star);
446
filter: drop-shadow(0 0 3px #00000040);
447
}
448
449
.star-rating-container > input:checked ~ label {
450
color: var(--color-star);
451
}
452