Web platform for sharing free image data for ML and research

Homepage: https://datasets.roundabout-host.com

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 • 16.34 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
--reserved-height-top: 0;
20
}
21
22
.ripple-pad {
23
background: #ffffff99;
24
position: absolute;
25
opacity: 1;
26
transform: scale(0);
27
animation: RippleEffect 375ms cubic-bezier(0, 0.55, 0.45, 1) forwards;
28
}
29
30
.button-flat .ripple-pad {
31
background: var(--color-primary-3);
32
}
33
34
@keyframes RippleEffect {
35
to {
36
transform: scale(1);
37
opacity: 0;
38
}
39
}
40
41
button, input, .button:not(.link-button), select, .navbar a, .navrail a {
42
position: relative;
43
overflow: hidden;
44
}
45
46
nav#desktop-navbar {
47
view-transition-name: navbar;
48
}
49
50
nav#mobile-navbar {
51
view-transition-name: navbar-mobile;
52
}
53
54
p {
55
color: var(--text-soft);
56
}
57
58
iconify-icon {
59
/* Material design icons are done in 24px, so we scale them to 1.5 as the default font size is 16px */
60
display: inline-block;
61
width: 1em;
62
height: 1em;
63
font-size: 1.5em;
64
}
65
66
:is(#shape-selector, #shape-options) > button > iconify-icon {
67
font-size: 2rem;
68
}
69
70
#annotation-zone, .annotation-zone {
71
position: relative;
72
user-select: none;
73
}
74
75
.annotation-zone {
76
overflow: hidden;
77
}
78
79
#annotation-zone {
80
overflow: visible;
81
}
82
83
#annotation-image, .annotation-image {
84
user-drag: none;
85
-webkit-user-drag: none;
86
image-rendering: pixelated;
87
}
88
89
#annotation-zone > svg, .annotation-zone > svg {
90
z-index: 1;
91
position: absolute;
92
top: 0;
93
left: 0;
94
width: 100%;
95
height: 100%;
96
}
97
98
.annotation-ruler {
99
z-index: 2;
100
position: absolute;
101
top: 0;
102
left: 0;
103
background: var(--color-accent);
104
display: none;
105
}
106
107
#annotation-ruler-horizontal, #annotation-ruler-horizontal-secondary {
108
height: 1px;
109
width: 100%;
110
}
111
112
#annotation-ruler-vertical, #annotation-ruler-vertical-secondary {
113
width: 1px;
114
height: 100%;
115
}
116
117
.shape {
118
stroke: var(--color-accent);
119
fill: var(--color-accent);
120
fill-opacity: 0.1;
121
stroke-width: 2px;
122
vector-effect: non-scaling-stroke;
123
pointer-events: auto;
124
transition: filter 0.25s cubic-bezier(0.61, 1, 0.88, 1),
125
fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
126
stroke-width 0.25s cubic-bezier(0.61, 1, 0.88, 1);
127
stroke-linecap: square;
128
stroke-linejoin: miter;
129
}
130
131
.shape-polyline {
132
fill: none;
133
}
134
135
.shape-point {
136
stroke: var(--color-accent);
137
stroke-width: 2px;
138
fill-opacity: 1;
139
r: 2;
140
transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
141
stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
142
filter 0.25s cubic-bezier(0.61, 1, 0.88, 1);
143
}
144
145
.shape.selected {
146
fill-opacity: 0.2;
147
stroke-width: 4px;
148
filter: drop-shadow(0 0 2px var(--text-soft));
149
}
150
151
.shape-point.selected {
152
fill-opacity: 1;
153
r: 6;
154
stroke-width: 6px;
155
}
156
157
.shape-container, .shape-container-viewonly {
158
pointer-events: none;
159
}
160
161
#annotation-helper-message {
162
min-height: 2lh;
163
}
164
165
.shape-container-viewonly > .shape, .thumbnail-list > li .shape {
166
fill: var(--color-info);
167
stroke: var(--color-info);
168
fill-opacity: 0;
169
stroke-opacity: 0;
170
transition: fill-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
171
stroke-opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1);
172
}
173
174
.shape-container-viewonly > .shape-polyline, .thumbnail-list > li .shape-polyline {
175
fill: none;
176
}
177
178
.shape-container-viewonly > .shape-point, .thumbnail-list > li .shape-point {
179
stroke: var(--color-info);
180
transition: r 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
181
stroke-width 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
182
filter 0.25s cubic-bezier(0.61, 1, 0.88, 1);
183
}
184
185
.shape-label {
186
position: absolute;
187
font-weight: 500;
188
color: var(--color-shape-label-text) !important;
189
pointer-events: auto;
190
height: 28px;
191
padding-left: 8px;
192
padding-right: 8px;
193
display: flex;
194
align-items: center;
195
justify-content: center;
196
background: var(--color-shape-label);
197
width: max-content;
198
box-shadow: var(--shadow-button);
199
/* top-left corner is square to point to the shape */
200
border-radius: 0 16px 16px 16px;
201
opacity: 0;
202
transition: opacity 0.25s cubic-bezier(0.61, 1, 0.88, 1),
203
transform 0.375s cubic-bezier(0.16, 1, 0.3, 1);
204
transform: scale(0);
205
transform-origin: top left;
206
z-index: 3;
207
text-decoration: none;
208
}
209
210
.shape-label:hover {
211
text-decoration: underline;
212
}
213
214
/* Only show region parts when checkbox is checked */
215
#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-label {
216
opacity: 1;
217
transform: scale(1);
218
}
219
220
/* Hide points with a bubble */
221
#annotation-zone:has(+ x-buttonbox #show-objects:checked) > .shape-container-viewonly > .shape-point:has(+ foreignObject) {
222
r: 0;
223
border-width: 0;
224
}
225
226
#annotation-zone:has(+ x-buttonbox #show-shapes:checked) > .shape-container-viewonly > .shape {
227
fill-opacity: 0.1;
228
stroke-opacity: 1;
229
}
230
231
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) .shape {
232
fill-opacity: 0.2;
233
stroke-opacity: 1;
234
}
235
236
@keyframes move-out {
237
from {
238
transform: scale(1);
239
opacity: 1;
240
}
241
to {
242
transform: scale(0.5);
243
opacity: 0;
244
}
245
}
246
247
@keyframes move-in {
248
from {
249
transform: scale(0.5);
250
opacity: 0;
251
}
252
to {
253
transform: scale(1);
254
opacity: 1;
255
}
256
}
257
258
@keyframes slide-in {
259
from {
260
transform: translateX(-1.5rem);
261
opacity: 0;
262
}
263
to {
264
transform: translateX(0);
265
opacity: 1;
266
}
267
}
268
269
@keyframes slide-out {
270
from {
271
transform: translateX(0);
272
opacity: 1;
273
}
274
to {
275
transform: translateX(-1.5rem);
276
opacity: 0;
277
}
278
}
279
280
@media (prefers-reduced-motion: no-preference) {
281
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) > a > .annotation-zone,
282
html:not(:has(.thumbnail-list > li:is(:hover, :focus, :has(:focus)) > a > .annotation-zone)) #annotation-zone {
283
view-transition-name: thumbnail;
284
}
285
::view-transition-old(root),
286
::view-transition-new(root) {
287
transform-origin: top;
288
animation-duration: 0.5s;
289
animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
290
}
291
292
::view-transition-old(root) {
293
animation-name: move-out;
294
}
295
296
::view-transition-new(root) {
297
animation-name: move-in;
298
}
299
300
::view-transition-group(thumbnail) {
301
animation-duration: 0.5s;
302
animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
303
}
304
305
#annotation-zone::view-transition-old(thumbnail) {
306
animation-duration: 0s;
307
}
308
309
::view-transition-group(navbar), ::view-transition-group(navbar-mobile) {
310
animation-duration: 0.5s;
311
animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
312
}
313
}
314
315
.multi-select, .single-select {
316
display: flex;
317
flex-flow: column nowrap;
318
overflow-y: scroll;
319
box-shadow: var(--shadow-card-inset);
320
padding: 16px;
321
gap: 8px;
322
}
323
324
.licence-selection, .image-type-selection {
325
display: flex;
326
flex-flow: column nowrap;
327
}
328
329
.licence-selection-info, .image-type-selection-info {
330
margin-left: calc(var(--size-checkbox) + var(--gap-label-checkbox));
331
/* Align with the checkbox above */
332
}
333
334
.licence-selection-info > p, .image-type-selection-info > p {
335
font-weight: 300;
336
}
337
338
.licence-logo {
339
width: 128px;
340
float: right;
341
margin-left: 1ch;
342
}
343
344
.licence-title, .image-type-title {
345
display: flex;
346
justify-content: space-between;
347
width: 100%;
348
}
349
350
.licence-title > .licence-name, .image-type-title > .image-type-name {
351
font: var(--h5-font);
352
font-weight: 400;
353
}
354
355
.icon-explainer {
356
display: grid;
357
gap: 4px 8px;
358
grid-template-columns: auto 1fr;
359
align-items: center;
360
}
361
362
.icon-explainer *:nth-child(even) {
363
font-weight: 300;
364
}
365
366
.required-asterisk::after {
367
content: "*";
368
color: var(--color-error);
369
}
370
371
small {
372
/* BIG :D */
373
font-size: 1em;
374
}
375
376
#pagination {
377
display: flex;
378
gap: 1em;
379
justify-content: center;
380
align-items: center;
381
font-size: 1.5em;
382
font-weight: 600;
383
flex: 1 0 auto;
384
}
385
386
#pagination > a {
387
text-decoration: none;
388
color: var(--color-accent-1);
389
}
390
391
#pagination-options > form {
392
align-items: center;
393
display: flex;
394
gap: 1em;
395
}
396
397
#pagination-options {
398
justify-content: center;
399
align-items: center;
400
gap: 1em;
401
width: 100%;
402
}
403
404
.thumbnail-list {
405
list-style: none;
406
margin: 0 !important;
407
display: grid;
408
grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
409
gap: 16px;
410
}
411
412
.thumbnail-list > li {
413
transition: box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1);
414
box-shadow: var(--shadow-card);
415
background: var(--color-card);
416
}
417
418
.thumbnail-list > li > a, .thumbnail-list > li {
419
display: flex;
420
flex-direction: column;
421
justify-content: space-between;
422
height: 100%;
423
}
424
425
.thumbnail-list > li > .list-more {
426
display: flex;
427
justify-content: space-between;
428
align-items: center;
429
padding: 8px;
430
}
431
432
.thumbnail-list > li:is(:hover, :focus, :has(:focus)) {
433
box-shadow: var(--shadow-card), 0 4px 32px rgba(0, 0, 0, 0.12), 0 4px 16px rgba(0, 0, 0, 0.08);
434
}
435
436
.thumbnail-list > li .annotation-zone {
437
transition: transform 0.25s cubic-bezier(0.61, 1, 0.88, 1),
438
box-shadow 0.25s cubic-bezier(0.61, 1, 0.88, 1);
439
}
440
441
.thumbnail-list > li .annotation-zone:hover {
442
position: relative;
443
transform: scale(2);
444
z-index: 1;
445
box-shadow: var(--shadow-textarea-active);
446
}
447
448
.thumbnail-list > li .list-detail {
449
padding: 8px;
450
display: block;
451
}
452
453
a.button {
454
text-decoration: none;
455
}
456
457
dt {
458
font-weight: 600;
459
}
460
461
dd {
462
margin-left: 40px;
463
}
464
465
#mobile-navbar, #mobile-navbar-spacer {
466
display: none;
467
}
468
469
@media screen and (max-width: 896px) {
470
#mobile-navbar {
471
display: flex;
472
}
473
header {
474
position: fixed;
475
top: 0;
476
left: 0;
477
width: 100%;
478
z-index: 3;
479
}
480
#mobile-navbar-spacer {
481
display: block;
482
height: var(--height-navbar);
483
}
484
#desktop-navbar {
485
display: none;
486
}
487
:root {
488
--reserved-height-top: var(--height-navbar);
489
}
490
}
491
492
#hamburger > nav {
493
display: flex;
494
flex-direction: column;
495
gap: 1em;
496
padding: var(--padding-card);
497
padding-top: var(--padding-card-top);
498
box-shadow: var(--shadow-card);
499
background: var(--color-card);
500
justify-content: space-between;
501
width: clamp(240px, calc(100vw - 56px), 448px);
502
}
503
504
#hamburger > nav > ul {
505
display: flex;
506
flex-direction: column;
507
gap: 1em;
508
margin: 0;
509
}
510
511
#hamburger > nav > ul > li {
512
display: flex;
513
gap: var(--gap-label-checkbox);
514
align-items: center;
515
margin: 0;
516
}
517
518
#hamburger > nav > ul > li > a {
519
display: contents;
520
text-decoration: none;
521
color: var(--color-card-text);
522
}
523
524
.star-rating-container {
525
display: flex;
526
flex-direction: row-reverse;
527
font-size: 1.25em;
528
align-items: center;
529
justify-content: flex-end; /* In this case, it means LEFT, not right, because of the row-reverse */
530
}
531
532
.star-rating-container > input {
533
width: 0 !important;
534
height: 0 !important;
535
visibility: hidden;
536
}
537
538
.star-rating-container > label {
539
cursor: pointer;
540
color: var(--text-softest);
541
transition: color 0.25s cubic-bezier(0.37, 0, 0.63, 1),
542
filter 0.25s cubic-bezier(0.37, 0, 0.63, 1);
543
}
544
545
.star-rating-container > label:hover,
546
.star-rating-container > label:hover ~ label {
547
color: var(--color-star);
548
filter: drop-shadow(0 0 3px #00000040);
549
}
550
551
.star-rating-container > input:checked ~ label {
552
color: var(--color-star);
553
}
554
555
.visually-hidden {
556
position: absolute;
557
width: 1px;
558
height: 1px;
559
box-sizing: content-box;
560
margin: -1px;
561
overflow: hidden;
562
clip-path: inset(50%);
563
border: 0;
564
}
565
566
.rating-list {
567
display: grid;
568
grid-auto-columns: 1fr;
569
gap: 0.5rem;
570
grid-template-columns: auto;
571
list-style: none;
572
margin: 0 !important;
573
padding: 0;
574
min-width: 50%;
575
}
576
577
.rating-list > li {
578
grid-column-start: 1;
579
height: 28px;
580
padding: 4px 8px;
581
display: flex;
582
align-items: center;
583
justify-content: space-between;
584
gap: 0.5rch;
585
border-radius: 0 4px 4px 0;
586
margin: 0;
587
}
588
589
.rating-bar {
590
display: flex;
591
align-items: center;
592
justify-content: flex-start;
593
gap: 0.5rch;
594
font-size: 1.25em;
595
width: 100%;
596
}
597
598
.rating-bar > .rating-bar-segment {
599
position: relative;
600
width: 1em;
601
height: 1em;
602
clip-path: url(#star-clip);
603
background: var(--text-softest);
604
}
605
606
.rating-bar > .rating-bar-segment > .rating-bar-filling {
607
background: var(--color-star);
608
height: 100%;
609
position: absolute;
610
top: 0;
611
left: 0;
612
}
613
614
#picture-view {
615
display: flex;
616
flex-direction: row;
617
gap: 1em;
618
align-items: flex-start;
619
justify-content: center;
620
width: fit-content;
621
margin: 0 auto;
622
}
623
624
#picture-view > x-frame {
625
flex: 1 1 var(--width);
626
margin: 0;
627
}
628
629
#picture-actions {
630
--width: 256px;
631
position: sticky;
632
top: var(--reserved-height-top);
633
overflow: auto;
634
max-height: 100vh;
635
height: 100%;
636
background: var(--color-card);
637
padding: 1rem 0;
638
box-shadow: var(--shadow-card);
639
}
640
641
@media screen and (max-width: 768px) {
642
#picture-view {
643
flex-direction: column;
644
}
645
#picture-view > x-frame {
646
flex: 1 1 auto;
647
margin: 0;
648
}
649
#picture-actions {
650
--width: 768px;
651
position: static;
652
padding: 1rem;
653
}
654
#picture-actions > ul {
655
width: 100%;
656
list-style: none;
657
margin: 0;
658
padding: 0;
659
}
660
#picture-actions > ul > li {
661
display: inline;
662
}
663
.action-list > li {
664
padding: 0 !important;
665
}
666
}
667
668
.action-list {
669
list-style: none;
670
margin: 0 !important;
671
padding: 0;
672
}
673
674
.action-list > li {
675
display: flex;
676
margin: 0;
677
width: 100%;
678
padding: 0.25rem 1rem;
679
}
680
681
.action-list > li > a {
682
text-decoration: none;
683
color: var(--color-card-text) !important;
684
display: flex;
685
align-items: center;
686
gap: 0.5rch;
687
font-weight: 400;
688
}
689
690
.action-list > li > details > summary {
691
color: var(--color-card-text) !important;
692
display: flex;
693
align-items: center;
694
gap: 0.5rch;
695
font-weight: 400;
696
}
697
698
#picture-buttons {
699
padding: 0 1rem;
700
}
701
702
@media print {
703
#picture-actions, #annotation-view-controls {
704
display: none;
705
}
706
.navbar {
707
display: none;
708
}
709
:root {
710
--color-background: #ffffff;
711
}
712
#annotation-zone, .thumbnail-list {
713
width: 100vw;
714
height: auto;
715
position: relative;
716
left: calc(-1 * (50vw - 50%));
717
}
718
}
719
720
.navbar > ul {
721
max-width: 100%;
722
}
723
724
#desktop-navbar > ul:first-child { /* list containing title */
725
flex: 0 1 auto;
726
min-width: 0;
727
}
728
729
#desktop-navbar > ul:last-child { /* list containing navigation */
730
flex: 1 0 auto;
731
justify-content: end;
732
}
733
734
#mobile-navbar-title, #desktop-navbar-title {
735
font: var(--h5-font);
736
font-weight: 700;
737
white-space: nowrap;
738
overflow: hidden;
739
text-overflow: ellipsis;
740
flex: 0 1 auto;
741
min-width: 0;
742
}
743
744
nav .button-flat {
745
--color-flat-button-hover: transparent;
746
--color-flat-button-active: transparent;
747
}
748
749
nav .button-flat .ripple-pad {
750
background: #ffffff99;
751
}
752
753
.warning {
754
background: var(--color-alert);
755
color: var(--color-alert-text);
756
padding: 1rem;
757
margin: 1rem 0;
758
border-radius: var(--radius-card);
759
box-shadow: var(--shadow-card);
760
--color-link-text: #000000;
761
--color-link-hover-text: #000000;
762
--color-link-visited-text: #000000;
763
--color-link-visited-hover-text: #000000;
764
--color-link-active-text: #000000;
765
}
766
767
.warning h2 {
768
font: var(--h3-font);
769
}
770
771
#annotation-zone {
772
box-shadow: var(--shadow-card);
773
}
774
775
#hamburger-site-name {
776
font: var(--h4-font);
777
text-transform: uppercase;
778
color: var(--color-accent);
779
}
780
781
#object-types {
782
z-index: 3;
783
background: var(--color-card);
784
box-shadow: var(--shadow-card);
785
padding: 1rem;
786
border-radius: var(--radius-card);
787
position: absolute;
788
display: none;
789
overflow: auto;
790
}
791