A photo manager for VRChat.
1@font-face {
2 font-family: Rubik;
3 src: url(https://cdn.phazed.xyz/fonts/rubik/Rubik-VariableFont_wght.ttf);
4}
5
6body{
7 background: #000;
8 margin: 0;
9 font-family: Rubik, 'Courier New';
10}
11
12.loading{
13 position: fixed;
14 z-index: 10000;
15 top: 0;
16 left: 0;
17 width: 100%;
18 height: 100%;
19 background: black;
20 display: flex;
21 opacity: 1;
22 color: white;
23 justify-content: center;
24 align-items: center;
25}
26
27.navbar{
28 background: #555a;
29 position: fixed;
30 top: 0;
31 left: 0;
32 width: 100%;
33 margin-top: -50px;
34 padding-top: 50px;
35 height: 50px;
36 display: flex;
37 backdrop-filter: blur(10px);
38 -webkit-backdrop-filter: blur(10px);
39 z-index: 10;
40 box-shadow: #000 0 0 10px;
41}
42
43.navbar .tabs{
44 width: calc(100% - 450px);
45 height: 100%;
46 display: flex;
47}
48
49.navbar .account{
50 width: 100px;
51 height: 100%;
52 display: flex;
53 justify-content: center;
54 align-items: center;
55 transition: 0.1s;
56 cursor: pointer;
57 user-select: none;
58 -webkit-user-select: none;
59}
60
61.navbar .account:hover{
62 background: #0005;
63}
64
65.navbar .control-lights{
66 width: 150px;
67 height: 50px;
68 display: flex;
69 justify-content: center;
70 align-items: center;
71}
72
73.control-lights .light{
74 user-select: none;
75 -webkit-user-select: none;
76 font-size: 20px;
77 text-align: center;
78 color: white;
79 width: 100%;
80 cursor: pointer;
81 display: flex;
82 justify-content: center;
83 align-items: center;
84 height: 50px;
85 filter: invert(100%);
86}
87
88.control-lights .light:hover{
89 background: #fff5;
90}
91
92.control-lights .light img{
93 width: 25%;
94}
95
96.icon{
97 width: 15px;
98 filter: invert(100%);
99 display: flex;
100 align-items: center;
101 justify-content: center;
102 height: 100%;
103}
104
105.icon-label{
106 margin-top: -20px;
107 margin-right: -200px;
108 width: 200px;
109 color: white;
110 pointer-events: none;
111 transform: translate(40px, -19px);
112 opacity: 0;
113 transition: 0.25s;
114 user-select: none;
115 -webkit-user-select: none;
116}
117
118.icon:hover ~ .icon-label{
119 opacity: 1;
120 transform: translate(60px, -19px);
121}
122
123.user-pfp{
124 width: 35px;
125 height: 35px;
126 background-size: cover !important;
127 background-position: center !important;
128 border-radius: 50%;
129 margin-right: 10px;
130}
131
132.account-dropdown{
133 font-size: 20px;
134 color: white;
135}
136
137.nav-tab{
138 color: white;
139 width: 150px;
140 height: 100%;
141 transition: 0.1s;
142 cursor: pointer;
143 user-select: none;
144 -webkit-user-select: none;
145 justify-content: center;
146 align-items: center;
147 display: flex;
148}
149
150.nav-tab:hover{
151 background: #0005;
152}
153
154.dropdown{
155 position: fixed;
156 right: 125px;
157 top: 60px;
158 background: #555a;
159 height: 60px;
160 width: 150px;
161 border-radius: 5px;
162 backdrop-filter: blur(5px);
163 z-index: 10;
164}
165
166.dropdown-button{
167 width: 100%;
168 text-align: center;
169 padding: 5.5px 0;
170 color: #aaa;
171 cursor: pointer;
172 user-select: none;
173 -webkit-user-select: none;
174 transition: 0.1s;
175}
176
177.dropdown-button:hover{
178 color: #fff;
179}
180
181.photo-list{
182 width: 100%;
183 height: 100%;
184 position: fixed;
185 top: 0;
186 left: 0;
187 overflow: hidden;
188}
189
190.filter-options{
191 position: fixed;
192 top: 55px;
193 left: 5px;
194 width: 40px;
195 height: 50px;
196}
197
198.filter-options img{
199 cursor: pointer;
200 user-select: none;
201 -webkit-user-select: none;
202}
203
204.filter-container{
205 display: none;
206 position: fixed;
207 bottom: 0;
208 left: 50%;
209 width: 600px;
210 height: 83px;
211 transform: translate(-50%);
212 padding: 10px;
213 border-radius: 5px 5px 0 0;
214 backdrop-filter: blur(5px);
215 -webkit-backdrop-filter: blur(5px);
216 background: #555a;
217 color: #fff;
218 text-align: center;
219 box-shadow: #0005 0 0 10px;
220 opacity: 0;
221}
222
223.filter-container > .filter-title{
224 font-size: 30px;
225}
226
227.filter-type-select{
228 display: flex;
229 justify-content: center;
230 align-items: center;
231 width: 75%;
232 margin: auto;
233}
234
235.filter-type-select > div{
236 width: 100%;
237 border: #fff 4px solid;
238 border-left: #fff 2px solid;
239 border-right: #fff 2px solid;
240 padding: 5px 0;
241 cursor: pointer;
242 user-select: none;
243 -webkit-user-select: none;
244}
245
246.filter-type-select > div:first-child{
247 border-left: #fff 4px solid;
248 border-radius: 10px 0 0 10px;
249}
250
251.filter-type-select > div:last-child{
252 border-right: #fff 4px solid;
253 border-radius: 0 10px 10px 0;
254}
255
256.filter-type-select > .selected-filter{
257 background: #00ccff55;
258}
259
260.filter-search{
261 margin-top: 10px;
262 padding: 5px;
263 border: #fff 4px solid;
264 border-radius: 10px;
265 background: #0008;
266 outline: none;
267 color: white;
268 font-size: 15px;
269 font-family: 'Rubik';
270 width: calc(75% - 18px);
271}
272
273.date-list{
274 mask-image: linear-gradient(to bottom, #0000, #000, #0000);
275 overflow: auto;
276 scrollbar-width: thin;
277 height: calc(100% - 100px);
278 padding: 50px 0;
279}
280
281.date-list-date{
282 padding: 10px;
283 user-select: none;
284 -webkit-user-select: none;
285 cursor: pointer;
286 transition: 0.1s;
287 border-radius: 10px;
288}
289
290.date-list-date:hover{
291 background: #0005;
292 box-shadow: inset #0005 0 0 10px;
293}
294
295.photo-tree-loading{
296 position: fixed;
297 top: 0;
298 left: 0;
299 width: 100%;
300 height: 100%;
301 display: flex;
302 justify-content: center;
303 align-items: center;
304 color: white;
305 font-size: 20px;
306}
307
308.loading-bar{
309 width: 500px;
310 height: 8px;
311 border-radius: 12px;
312 background: #333;
313 margin-top: 10px;
314 padding: 2px;
315}
316
317.loading-bar-inner{
318 width: 0%;
319 height: 8px;
320 border-radius: 18px;
321 background: #00ccff;
322}
323
324.photo-container{
325 width: 100%;
326 height: 100%;
327}
328
329.photo-container-bg{
330 width: 100%;
331 height: 100%;
332 position: fixed;
333 top: 0;
334 left: 0;
335 z-index: -1;
336 /* filter: blur(100px); */
337}
338
339.single-photo-container{
340 margin: 10px;
341 display: inline-block;
342}
343
344.photo-viewer{
345 justify-content: center;
346 width: 100%;
347 height: 100%;
348 position: fixed;
349 top: 0;
350 left: 0;
351 z-index: 5;
352 background: #0009;
353 backdrop-filter: blur(75px);
354 -webkit-backdrop-filter: blur(75px);
355 opacity: 0;
356 display: none;
357}
358
359.photo-context-menu{
360 position: fixed;
361 top: 0;
362 left: 0;
363 padding: 10px;
364 border-radius: 5px;
365 backdrop-filter: blur(5px);
366 -webkit-backdrop-filter: blur(5px);
367 background: #555a;
368 color: #aaa;
369 box-shadow: #0005 0 0 10px;
370 opacity: 0;
371}
372
373.photo-context-menu > div{
374 padding: 2px 10px;
375 width: calc(100% - 10px);
376 text-align: center;
377 transition: 0.1s;
378}
379
380.photo-context-menu > div:hover{
381 color: #fff;
382 cursor: pointer;
383 user-select: none;
384 -webkit-user-select: none;
385}
386
387.image-container{
388 height: 100%;
389 background-size: contain !important;
390 background-repeat: no-repeat !important;
391 background-position: center !important;
392 opacity: 0;
393}
394
395.viewer-button{
396 color: white;
397 width: 30px;
398 height: 30px;
399 display: flex;
400 justify-content: center;
401 align-items: center;
402 border-radius: 50px;
403 font-size: 12px;
404 background: #8885;
405 backdrop-filter: blur(10px);
406 -webkit-backdrop-filter: blur(10px);
407 user-select: none;
408 -webkit-user-select: none;
409 cursor: pointer;
410 z-index: 7;
411 box-shadow: #0008 0 0 10px;
412}
413
414.viewer-close{
415 position: fixed;
416 top: 10px;
417 right: 10px;
418 width: 35px;
419 height: 35px;
420}
421
422.prev-button{
423 transition: 0.25s;
424 position: fixed;
425 top: 50%;
426 left: 0;
427 color: white;
428 width: 50px;
429 height: 150px;
430 display: flex;
431 justify-content: center;
432 align-items: center;
433 transform: translateY(-50%);
434 background: rgba(255, 255, 255, 0.144);
435 backdrop-filter: blur(50px);
436 -webkit-backdrop-filter: blur(50px);
437 border-radius: 0 15px 15px 0;
438 cursor: pointer;
439 user-select: none;
440 -webkit-user-select: none;
441 box-shadow: #000 0 0 10px;
442}
443
444.prev-button:hover{
445 background: rgba(255, 255, 255, 0.349);
446}
447
448.next-button{
449 transition: 0.25s;
450 position: fixed;
451 top: 50%;
452 right: 0;
453 color: white;
454 width: 50px;
455 height: 150px;
456 display: flex;
457 justify-content: center;
458 align-items: center;
459 transform: translateY(-50%);
460 background: rgba(255, 255, 255, 0.144);
461 backdrop-filter: blur(50px);
462 -webkit-backdrop-filter: blur(50px);
463 border-radius: 15px 0 0 15px;
464 cursor: pointer;
465 user-select: none;
466 -webkit-user-select: none;
467 box-shadow: #000 0 0 10px;
468}
469
470.next-button:hover{
471 background: rgba(255, 255, 255, 0.349);
472}
473
474.reload-photos{
475 position: fixed;
476 top: 70px;
477 right: 20px;
478 color: white;
479 user-select: none;
480 -webkit-user-select: none;
481 cursor: pointer;
482 opacity: 0;
483}
484
485.confirmation-box{
486 position: fixed;
487 top: 0;
488 left: 0;
489 width: 100%;
490 height: 100%;
491 z-index: 15;
492 background: #0005;
493 transition: 0.25s;
494 backdrop-filter: blur(10px);
495 -webkit-backdrop-filter: blur(10px);
496}
497
498.confirmation-box-container{
499 position: fixed;
500 top: 50%;
501 left: 50%;
502 transform: translate(-50%, -50%);
503 color: white;
504 text-align: center;
505 background: #9995;
506 padding: 10px;
507 width: 60%;
508 border-radius: 10px;
509 box-shadow: #000 0 0 10px;
510 font-size: 18px;
511 -webkit-backdrop-filter: blur(10px);
512 backdrop-filter: blur(10px);
513}
514
515.button-danger{
516 display: inline-block;
517 -webkit-backdrop-filter: blur(10px);
518 backdrop-filter: blur(10px);
519 padding: 10px;
520 background: rgba(255, 0, 0, 0.333);
521 box-shadow: #0005 inset 0 0 10px;
522 border-radius: 50px;
523 margin: 0 10px;
524 cursor: pointer;
525 user-select: none;
526 -webkit-user-select: none;
527 width: 200px;
528 transition: 0.25s;
529}
530
531.button{
532 display: inline-block;
533 padding: 10px;
534 backdrop-filter: blur(10px);
535 -webkit-backdrop-filter: blur(10px);
536 background: #9995;
537 box-shadow: #0005 inset 0 0 10px;
538 border-radius: 50px;
539 margin: 0 10px;
540 cursor: pointer;
541 user-select: none;
542 -webkit-user-select: none;
543 width: 200px;
544 transition: 0.25s;
545}
546
547.button:hover{
548 box-shadow: #000a inset 0 0 10px;
549}
550
551.button-danger:hover{
552 box-shadow: #000a inset 0 0 10px;
553}
554
555.control-buttons{
556 position: fixed;
557 bottom: 10px;
558 left: 50%;
559 transform: translateX(-50%);
560 display: flex;
561}
562
563.control-buttons div{
564 margin: 0 20px;
565}
566
567.copy-notif{
568 position: fixed;
569 top: 40px;
570 left: 50%;
571 color: white;
572 transform: translateX(-50%) translateY(-100px);
573 background: #8885;
574 padding: 10px 40px;
575 backdrop-filter: blur(10px);
576 -webkit-backdrop-filter: blur(10px);
577 border-radius: 50px;
578 box-shadow: #000 0 0 10px;
579 z-index: 12;
580 opacity: 0;
581 pointer-events: none;
582}
583
584.photo-tray{
585 position: fixed;
586 bottom: -150px;
587 left: 0;
588 width: 100%;
589 height: 150px;
590 background: #7778;
591 backdrop-filter: blur(10px);
592 -webkit-backdrop-filter: blur(10px);
593 box-shadow: #0008 0 0 10px;
594 padding-bottom: 150px;
595 margin-bottom: -150px;
596}
597
598.photo-tray-close{
599 position: fixed;
600 bottom: 160px;
601 left: 50%;
602 transform: translate(-50%);
603 color: white;
604 background: #8885;
605 backdrop-filter: blur(10px);
606 -webkit-backdrop-filter: blur(10px);
607 box-shadow: #0008 0 0 10px;
608 display: flex;
609 justify-content: center;
610 align-items: center;
611 height: 30px;
612 width: 50px;
613 border-radius: 50px;
614 cursor: pointer;
615 font-size: 12px;
616 user-select: none;
617 -webkit-user-select: none;
618 transition: 0.25s width;
619}
620
621.photo-tray-close:hover{
622 width: 70px;
623}
624
625.photo-tray-columns{
626 width: 100%;
627 height: 100%;
628 display: flex;
629 color: white;
630 text-align: center;
631}
632
633.photo-tray-column{
634 height: 100%;
635 width: 100%;
636 scrollbar-width: thin;
637 overflow-y: auto;
638 overflow-x: hidden;
639 mask-image: linear-gradient(to bottom, #0000 0%, #000 10%, #000 90%, #0000 100%);
640}
641
642.tray-heading{
643 font-weight: bold;
644 font-size: 20px;
645}
646
647.world-tags{
648 display: flex;
649 width: 100%;
650 justify-content: center;
651 align-items: center;
652}
653
654.world-tags div{
655 padding: 0 10px;
656 color: #bbb;
657 transition: 0.25s;
658}
659
660.world-tags div:hover{
661 color: #ddd;
662}
663
664.world-name{
665 font-size: 17px;
666}
667
668.settings{
669 position: fixed;
670 top: 0;
671 left: 0;
672 width: 100%;
673 height: 100%;
674 background: rgba(0, 0, 0, 0.4);
675 backdrop-filter: blur(100px);
676 -webkit-backdrop-filter: blur(100px);
677}
678
679.slide-bar{
680 position: fixed;
681 bottom: 0;
682 left: 0;
683 width: 100%;
684 height: 50px;
685 border-top: #aaa 1px solid;
686 overflow-x: hidden;
687 mask-image: linear-gradient(to left, #0000 0%, #000 20%, #000 80%, #0000 100%);
688 background: #aaa2;
689 box-shadow: #000 0 0 10px;
690}
691
692.inner-slide-bar{
693 display: flex;
694 height: 50px;
695 width: 200%;
696 color: white;
697 align-items: center;
698 cursor: pointer;
699 user-select: none;
700 -webkit-user-select: none;
701}
702
703.slider-dot{
704 width: 5px;
705 height: 5px;
706 border-radius: 5px;
707 background: #aaa;
708 margin: auto 25px;
709}
710
711.slider-text{
712 width: 200px;
713 text-align: center;
714 height: 50px;
715 display: flex;
716 justify-content: center;
717 align-items: center;
718 color: #aaa;
719 transition: 0.25s;
720}
721
722.slider-text:hover{
723 color: #fff;
724}
725
726.slide-bar-tri{
727 position: fixed;
728 bottom: 40px;
729 left: 50%;
730 transform: translateX(-50%);
731 border: transparent solid 5px;
732 border-top: #fff solid 5px;
733}
734
735.settings-container{
736 position: fixed;
737 top: 50px;
738 left: 0px;
739 width: 200%;
740 height: calc(100% - 100px);
741 display: flex;
742}
743
744.settings-block{
745 width: 50%;
746 height: 100%;
747 color: white;
748 text-align: center;
749}
750
751.selector{
752 padding: 10px 20px;
753 border-radius: 10px;
754 background: #000a;
755 display: inline-block;
756 margin: 10px;
757}
758
759.selector .selection-box{
760 height: 20px;
761 background: #777a;
762 margin: 5px -10px 0 -10px;
763 border-radius: 8px;
764 user-select: none;
765 -webkit-user-select: none;
766 cursor: pointer;
767 transition: 0.25s;
768 color: #fff1;
769}
770
771.selector .selection-box:hover{
772 height: 20px;
773 background: #777a;
774 margin: 5px -10px 0 -10px;
775 border-radius: 8px;
776 user-select: none;
777 -webkit-user-select: none;
778 cursor: pointer;
779 transition: 0.25s;
780 color: #fff5;
781}
782
783.selector input{
784 display: none;
785}
786
787.selector input:checked ~ label .selection-box{
788 background: rgba(0, 146, 204, 0.705);
789 color: #fff;
790}
791
792.path{
793 padding: 5px 10px;
794 background: #000a;
795 border-radius: 5px;
796 margin-left: 5px;
797 cursor: pointer;
798}
799
800.scroll-to-top{
801 position: fixed;
802 bottom: 10px;
803 right: 10px;
804 color: white;
805 width: 40px;
806 height: 40px;
807 cursor: pointer;
808 border-radius: 50%;
809 border: 2px solid white;
810 display: flex;
811 justify-content: center;
812 align-items: center;
813}
814
815.account-profile{
816 margin: auto;
817 width: 50%;
818 height: 200px;
819 display: flex;
820}
821
822.account-pfp{
823 width: 200px;
824 height: 200px;
825 background-position: center !important;
826 background-size: cover !important;
827 border-radius: 50%;
828 box-shadow: #0005 0 0 10px;
829 position: relative;
830 z-index: 10;
831}
832
833.account-desc{
834 width: calc(100% - 200px);
835 padding-left: 100px;
836 height: 150px;
837 margin: 25px 0;
838 margin-left: -100px;
839 background: #0009;
840 border-radius: 10px;
841 box-shadow: #0005 0 0 10px;
842}
843
844.storage-bar{
845 width: calc(100% - 20px);
846 height: 10px;
847 margin-left: 10px;
848 background: #555;
849 border-radius: 10px;
850 display: flex;
851 justify-content: left;
852 align-items: center;
853 margin-bottom: 2px;
854}
855
856.storage-bar-inner{
857 margin: 2px;
858 height: 6px;
859 background: #00ccff;
860 border-radius: 10px;
861}
862
863.account-notice{
864 background: #0007;
865 border-radius: 5px;
866 box-shadow: #0005 0 0 10px;
867 padding: 10px;
868 margin: auto;
869 width: calc(50% - 20px);
870 margin-top: 25px;
871}
872
873img{
874 max-width: 100%;
875 max-height: 100%;
876}