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