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