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