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