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 • 12.54 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
--1-star: #FF8079;
14
--2-star: #FF8A65;
15
--3-star: #FFAC1B;
16
--4-star: #FBC02D;
17
--5-star: #CDDC39;
18
/*view-transition-name: root;*/
19
}
20
21
nav {
22
/*view-transition-name: nav;*/
23
}
24
25
p {
26
color: var(--text-soft);
27
}
28
29
iconify-icon {
30
/* Material design icons are done in 24px, so we scale them to 1.5 as the default font size is 16px */
31
display: inline-block;
32
width: 1em;
33
height: 1em;
34
font-size: 1.5em;
35
}
36
37
:is(#shape-selector, #shape-options) > button > iconify-icon {
38
font-size: 2rem;
39
}
40
41
#annotation-zone, .annotation-zone {
42
position: relative;
43
user-select: none;
44
overflow: hidden;
45
}
46
47
#annotation-image, .annotation-image {
48
user-drag: none;
49
-webkit-user-drag: none;
50
image-rendering: pixelated;
51
}
52
53
#annotation-zone > svg, .annotation-zone > svg {
54
z-index: 1;
55
position: absolute;
56
top: 0;
57
left: 0;
58
width: 100%;
59
height: 100%;
60
}
61
62
.annotation-ruler {
63
z-index: 2;
64
position: absolute;
65
top: 0;
66
left: 0;
67
background: var(--color-accent);
68
display: none;
69
}
70
71
#annotation-ruler-horizontal, #annotation-ruler-horizontal-secondary {
72
height: 1px;
73
width: 100%;
74
}
75
76
#annotation-ruler-vertical, #annotation-ruler-vertical-secondary {
77
width: 1px;
78
height: 100%;
79
}
80
81
.shape {
82
stroke: var(--color-accent);
83
fill: var(--color-accent);
84
fill-opacity: 0.1;
85
stroke-width: 2px;
86
vector-effect: non-scaling-stroke;
87
pointer-events: auto;
88
transition: filter 0.25s cubic-bezier(0.61, 1, 0.88, 1),
89
fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
90
stroke-width 0.25s cubic-bezier(0.61, 1, 0.88, 1);
91
stroke-linecap: square;
92
stroke-linejoin: miter;
93
}
94
95
.shape-polyline {
96
fill: none;
97
}
98
99
.shape-point {
100
stroke: var(--color-accent);
101
stroke-width: 2px;
102
fill-opacity: 1;
103
r: 2;
104
transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
105
stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
106
filter 0.25s cubic-bezier(0.61, 1, 0.88, 1);
107
}
108
109
.shape.selected {
110
fill-opacity: 0.2;
111
stroke-width: 4px;
112
filter: drop-shadow(0 0 2px var(--text-soft));
113
}
114
115
.shape-point.selected {
116
fill-opacity: 1;
117
r: 6;
118
stroke-width: 6px;
119
}
120
121
.shape-container, .shape-container-viewonly {
122
pointer-events: none;
123
}
124
125
#annotation-helper-message {
126
min-height: 2lh;
127
}
128
129
.shape-container-viewonly > .shape, .thumbnail-list > li .shape {
130
fill: var(--color-info);
131
stroke: var(--color-info);
132
fill-opacity: 0;
133
stroke-opacity: 0;
134
transition: fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
135
stroke-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1);
136
}
137
138
.shape-container-viewonly > .shape-polyline, .thumbnail-list > li .shape-polyline {
139
fill: none;
140
}
141
142
.shape-container-viewonly > .shape-point, .thumbnail-list > li .shape-point {
143
stroke: var(--color-info);
144
transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
145
stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
146
filter 0.25s cubic-bezier(0.61, 1, 0.88, 1);
147
}
148
149
.shape-label {
150
position: absolute;
151
font-weight: 500;
152
color: var(--color-shape-label-text) !important;
153
pointer-events: auto;
154
height: 28px;
155
padding-left: 8px;
156
padding-right: 8px;
157
display: flex;
158
align-items: center;
159
justify-content: center;
160
background: var(--color-shape-label);
161
width: max-content;
162
box-shadow: var(--shadow-button);
163
/* top-left corner is square to point to the shape */
164
border-radius: 0 16px 16px 16px;
165
opacity: 0;
166
transition: opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
167
transform 0.375s cubic-bezier(0.16, 1, 0.3, 1);
168
transform: scale(0);
169
transform-origin: top left;
170
z-index: 3;
171
text-decoration: none;
172
}
173
174
.shape-label:hover {
175
text-decoration: underline;
176
}
177
178
/* Only show region parts when checkbox is checked */
179
#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-label {
180
opacity: 1;
181
transform: scale(1);
182
}
183
184
/* Hide points with a bubble */
185
#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-container-viewonly > .shape-point:has(+ foreignObject) {
186
r: 0;
187
border-width: 0;
188
}
189
190
#annotation-zone:has(+ x-buttonbox #show-shapes:checked) > .shape-container-viewonly > .shape {
191
fill-opacity: 0.1;
192
stroke-opacity: 1;
193
}
194
195
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) .shape {
196
fill-opacity: 0.2;
197
stroke-opacity: 1;
198
}
199
200
/* Disabled for now, until there is more navigation that would benefit from transitions */
201
/*
202
@view-transition {
203
navigation: auto;
204
}
205
206
@keyframes move-out {
207
from {
208
transform: translateX(0%);
209
}
210
to {
211
transform: translateX(-100%);
212
}
213
}
214
215
@keyframes move-in {
216
from {
217
transform: translateX(100%);
218
}
219
to {
220
transform: translateX(0%);
221
}
222
}
223
224
@media (prefers-reduced-motion: no-preference) {
225
::view-transition-old(root),
226
::view-transition-new(root) {
227
animation-duration: 0.25s;
228
animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
229
}
230
231
::view-transition-old(root) {
232
animation-name: move-out;
233
}
234
235
::view-transition-new(root) {
236
animation-name: move-in;
237
}
238
}
239
*/
240
241
.multi-select, .single-select {
242
display: flex;
243
flex-flow: column nowrap;
244
overflow-y: scroll;
245
box-shadow: var(--shadow-card-inset);
246
padding: 16px;
247
gap: 8px;
248
}
249
250
.licence-selection, .image-type-selection {
251
display: flex;
252
flex-flow: column nowrap;
253
}
254
255
.licence-selection-info, .image-type-selection-info {
256
margin-left: calc(var(--size-checkbox) + var(--gap-label-checkbox));
257
/* Align with the checkbox above */
258
}
259
260
.licence-selection-info > p, .image-type-selection-info > p {
261
font-weight: 300;
262
}
263
264
.licence-logo {
265
width: 128px;
266
float: right;
267
margin-left: 1ch;
268
}
269
270
.licence-title, .image-type-title {
271
display: flex;
272
justify-content: space-between;
273
width: 100%;
274
}
275
276
.licence-title > .licence-name, .image-type-title > .image-type-name {
277
font: var(--h5-font);
278
font-weight: 400;
279
}
280
281
.icon-explainer {
282
display: grid;
283
gap: 4px 8px;
284
grid-template-columns: auto 1fr;
285
align-items: center;
286
}
287
288
.icon-explainer *:nth-child(even) {
289
font-weight: 300;
290
}
291
292
.required-asterisk::after {
293
content: "*";
294
color: var(--color-error);
295
}
296
297
small {
298
/* BIG :D */
299
font-size: 1em;
300
}
301
302
#pagination {
303
display: flex;
304
gap: 1em;
305
justify-content: center;
306
align-items: center;
307
font-size: 1.5em;
308
font-weight: 600;
309
flex: 1 0 auto;
310
}
311
312
#pagination > a {
313
text-decoration: none;
314
color: var(--color-accent-1);
315
}
316
317
#pagination-options > form {
318
align-items: center;
319
display: flex;
320
gap: 1em;
321
}
322
323
#pagination-options {
324
justify-content: center;
325
align-items: center;
326
gap: 1em;
327
width: 100%;
328
}
329
330
.thumbnail-list {
331
list-style: none;
332
margin: 0 !important;
333
display: grid;
334
grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
335
gap: 16px;
336
}
337
338
.thumbnail-list > li {
339
transition: box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1);
340
box-shadow: var(--shadow-card);
341
background: var(--color-card);
342
}
343
344
.thumbnail-list > li > a, .thumbnail-list > li {
345
display: flex;
346
flex-direction: column;
347
justify-content: space-between;
348
height: 100%;
349
}
350
351
.thumbnail-list > li > .list-more {
352
display: flex;
353
justify-content: space-between;
354
align-items: center;
355
padding: 8px;
356
}
357
358
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) {
359
box-shadow: var(--shadow-card), 0 4px 32px rgba(0, 0, 0, 0.12), 0 4px 16px rgba(0, 0, 0, 0.08);
360
}
361
362
.thumbnail-list > li .annotation-zone {
363
transition: transform 0.25s cubic-bezier(0.61, 1, 0.88, 1),
364
box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1);
365
}
366
367
.thumbnail-list > li .annotation-zone:hover {
368
position: relative;
369
transform: scale(2);
370
z-index: 1;
371
box-shadow: var(--shadow-textarea-active);
372
}
373
374
.thumbnail-list > li .list-detail {
375
padding: 8px;
376
display: block;
377
}
378
379
a.button {
380
text-decoration: none;
381
}
382
383
dt {
384
font-weight: 600;
385
}
386
387
dd {
388
margin-left: 40px;
389
}
390
391
#mobile-navbar {
392
display: none;
393
}
394
395
@media screen and (max-width: 576px) {
396
#mobile-navbar {
397
display: flex;
398
}
399
#desktop-navbar {
400
display: none;
401
}
402
}
403
404
#hamburger > nav {
405
display: flex;
406
flex-direction: column;
407
gap: 1em;
408
padding: var(--padding-card);
409
padding-top: var(--padding-card-top);
410
box-shadow: var(--shadow-card);
411
background: var(--color-card);
412
justify-content: space-between;
413
width: clamp(240px, calc(100vw - 56px), 448px);
414
}
415
416
#hamburger > nav > ul {
417
display: flex;
418
flex-direction: column;
419
gap: 1em;
420
margin: 0;
421
}
422
423
#hamburger > nav > ul > li {
424
display: flex;
425
gap: var(--gap-label-checkbox);
426
align-items: center;
427
margin: 0;
428
}
429
430
#hamburger > nav > ul > li > a {
431
text-decoration: none;
432
color: var(--color-card-text);
433
}
434
435
.star-rating-container {
436
display: flex;
437
flex-direction: row-reverse;
438
font-size: 1.25em;
439
align-items: center;
440
justify-content: flex-end; /* In this case, it means LEFT, not right, because of the row-reverse */
441
}
442
443
.star-rating-container > input {
444
width: 0 !important;
445
height: 0 !important;
446
visibility: hidden;
447
}
448
449
.star-rating-container > label {
450
cursor: pointer;
451
color: var(--text-softest);
452
transition: color 0.25s cubic-bezier(0.37, 0, 0.63, 1),
453
filter 0.25s cubic-bezier(0.37, 0, 0.63, 1);
454
}
455
456
.star-rating-container > label:hover,
457
.star-rating-container > label:hover ~ label {
458
color: var(--color-star);
459
filter: drop-shadow(0 0 3px #00000040);
460
}
461
462
.star-rating-container > input:checked ~ label {
463
color: var(--color-star);
464
}
465
466
.visually-hidden {
467
position: absolute;
468
width: 1px;
469
height: 1px;
470
box-sizing: content-box;
471
margin: -1px;
472
overflow: hidden;
473
clip-path: inset(50%);
474
border: 0;
475
}
476
477
.rating-list {
478
display: grid;
479
grid-auto-columns: 1fr;
480
gap: 0.5rem;
481
grid-template-columns: auto;
482
list-style: none;
483
margin: 0 !important;
484
padding: 0;
485
min-width: 50%;
486
}
487
488
.rating-list > li {
489
grid-column-start: 1;
490
height: 28px;
491
padding: 4px 8px;
492
display: flex;
493
align-items: center;
494
justify-content: space-between;
495
gap: 0.5rch;
496
border-radius: 0 4px 4px 0;
497
margin: 0;
498
}
499
500
.rating-bar {
501
display: flex;
502
align-items: center;
503
justify-content: flex-start;
504
gap: 0.5rch;
505
font-size: 1.25em;
506
width: 100%;
507
}
508
509
.rating-bar > .rating-bar-segment {
510
position: relative;
511
width: 1em;
512
height: 1em;
513
clip-path: url(#star-clip);
514
background: var(--text-softest);
515
}
516
517
.rating-bar > .rating-bar-segment > .rating-bar-filling {
518
background: var(--color-star);
519
height: 100%;
520
position: absolute;
521
top: 0;
522
left: 0;
523
}
524
525
#picture-view {
526
display: flex;
527
flex-direction: row;
528
gap: 1em;
529
align-items: flex-start;
530
justify-content: center;
531
width: fit-content;
532
margin: 0 auto;
533
}
534
535
#picture-actions {
536
--width: 256px;
537
position: sticky;
538
top: 0;
539
overflow: auto;
540
max-height: 100vh;
541
height: 100%;
542
background: var(--color-card);
543
padding: 1rem 0;
544
box-shadow: var(--shadow-card);
545
}
546
547
@media screen and (max-width: 768px) {
548
#picture-view {
549
flex-direction: column;
550
}
551
#picture-actions {
552
--width: 768px;
553
position: static;
554
padding: 1rem;
555
}
556
#picture-actions > ul {
557
width: 100%;
558
list-style: none;
559
margin: 0;
560
padding: 0;
561
}
562
#picture-actions > ul > li {
563
display: inline;
564
}
565
#picture-actions > ul > li:not(:last-child)::after {
566
content: " | ";
567
}
568
.action-list > li {
569
padding: 0 !important;
570
}
571
}
572
573
.action-list {
574
list-style: none;
575
margin: 0 !important;
576
padding: 0;
577
}
578
579
.action-list > li {
580
display: flex;
581
margin: 0;
582
width: 100%;
583
padding: 0.25rem 1rem;
584
}
585
586
.action-list > li > a {
587
text-decoration: none;
588
color: var(--color-card-text) !important;
589
display: flex;
590
align-items: center;
591
gap: 0.5rch;
592
font-weight: 400;
593
}
594
595
.action-list > li > details > summary {
596
color: var(--color-card-text) !important;
597
display: flex;
598
align-items: center;
599
gap: 0.5rch;
600
font-weight: 400;
601
}
602