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