Thread viewer for Bluesky
1:root {
2 color-scheme: light dark;
3 supported-color-schemes: light dark;
4}
5
6@keyframes rotation {
7 from {
8 transform: rotate(0deg);
9 }
10 to {
11 transform: rotate(360deg);
12 }
13}
14
15body {
16 width: 960px;
17 margin: 0px auto 40px;
18 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
19 text-rendering: optimizeLegibility;
20 -webkit-font-smoothing: antialiased;
21 overflow-y: scroll;
22}
23
24a {
25 text-decoration: none;
26 color: rgb(0, 0, 255);
27}
28
29a:hover {
30 text-decoration: underline;
31}
32
33a:visited {
34 color: rgb(0, 0, 255);
35}
36
37#github {
38 position: fixed;
39 bottom: 10px;
40 right: 10px;
41 z-index: 10;
42}
43
44#github img {
45 width: 20px;
46 opacity: 0.4;
47}
48
49#github a:hover img {
50 opacity: 0.6;
51}
52
53#search {
54 visibility: hidden;
55 position: fixed;
56 top: 0;
57 bottom: 0;
58 left: 0;
59 right: 0;
60 display: flex;
61 align-items: center;
62 justify-content: center;
63 padding-bottom: 5%;
64}
65
66#search form {
67 border: 2px solid hsl(210, 100%, 80%);
68 border-radius: 10px;
69 padding: 15px 20px;
70 margin-left: 50px;
71}
72
73#search input {
74 font-size: 16pt;
75 width: 600px;
76 border: 0;
77 margin-left: 8px;
78}
79
80#search input:focus {
81 outline: none;
82}
83
84#account {
85 position: fixed;
86 top: 10px;
87 left: 10px;
88 line-height: 24px;
89 z-index: 20;
90 user-select: none;
91 -webkit-user-select: none;
92}
93
94#account i {
95 opacity: 0.4;
96}
97
98#account i:hover {
99 cursor: pointer;
100 opacity: 0.6;
101}
102
103#account img.avatar {
104 width: 24px;
105 height: 24px;
106 border-radius: 13px;
107 box-shadow: 0px 0px 2px black;
108}
109
110#account_menu {
111 position: fixed;
112 visibility: hidden;
113 top: 5px;
114 left: 5px;
115 padding-top: 30px;
116 z-index: 15;
117 background: hsl(210, 33.33%, 94.0%);
118 border: 1px solid #ccc;
119 border-radius: 5px;
120 user-select: none;
121 -webkit-user-select: none;
122}
123
124#account_menu ul {
125 list-style-type: none;
126 margin: 0px 0px 10px;
127 padding: 6px 11px;
128}
129
130#account_menu li a {
131 display: inline-block;
132 color: #333;
133 font-size: 11pt;
134 border: 1px solid #bbb;
135 padding: 3px 5px;
136 margin-top: 8px;
137 border-radius: 5px;
138 background-color: hsla(210, 100%, 4%, 0.12);
139}
140
141#account_menu li a:hover {
142 background-color: hsla(210, 100%, 4%, 0.2);
143 text-decoration: none;
144}
145
146#account_menu li .check {
147 display: none;
148}
149
150.dialog {
151 visibility: hidden;
152 position: fixed;
153 top: 0;
154 bottom: 0;
155 left: 0;
156 right: 0;
157 display: flex;
158 align-items: center;
159 justify-content: center;
160 padding-bottom: 5%;
161 z-index: 10;
162 background-color: rgba(240, 240, 240, 0.4);
163}
164
165.dialog.expanded {
166 padding-bottom: 0;
167}
168
169.dialog form {
170 position: relative;
171 border: 2px solid hsl(210, 100%, 85%);
172 background-color: hsl(210, 100%, 98%);
173 border-radius: 10px;
174 padding: 15px 25px;
175}
176
177.dialog .close {
178 position: absolute;
179 top: 5px;
180 right: 5px;
181 color: hsl(210, 100%, 75%);
182 opacity: 0.6;
183}
184
185.dialog .close:hover {
186 color: hsl(210, 100%, 65%);
187 opacity: 1.0;
188}
189
190.dialog p {
191 text-align: center;
192 line-height: 125%;
193}
194
195.dialog h2 {
196 font-size: 13pt;
197 font-weight: 600;
198 text-align: center;
199 margin-bottom: 25px;
200 padding-right: 10px;
201}
202
203.dialog p.submit {
204 margin-top: 25px;
205}
206
207.dialog p.info {
208 font-size: 9pt;
209}
210
211.dialog p.info a {
212 color: #666;
213}
214
215.dialog input[type="text"], .dialog input[type="password"] {
216 width: 200px;
217 font-size: 11pt;
218 border: 1px solid #d6d6d6;
219 border-radius: 4px;
220 padding: 5px 6px;
221 margin: 0px 15px;
222}
223
224.dialog input[type="submit"] {
225 width: 150px;
226 font-size: 11pt;
227 border: 1px solid hsl(210, 90%, 85%);
228 background-color: hsl(210, 100%, 92%);
229 border-radius: 4px;
230 padding: 5px 6px;
231}
232
233.dialog input[type="submit"]:hover {
234 background-color: hsl(210, 100%, 90%);
235 border: 1px solid hsl(210, 90%, 82%);
236}
237
238.dialog input[type="submit"]:active {
239 background-color: hsl(210, 100%, 87%);
240 border: 1px solid hsl(210, 90%, 80%);
241}
242
243#login #cloudy {
244 color: hsl(210, 60%, 75%);
245 margin: 14px 0px;
246 display: none;
247}
248
249#login .info-box {
250 display: none;
251 border: 1px solid hsl(45, 100%, 60%);
252 background-color: hsl(50, 100%, 96%);
253 width: 360px;
254 font-size: 11pt;
255 border-radius: 6px;
256}
257
258#login.expanded .info-box {
259 display: block;
260}
261
262#login .info-box p {
263 margin: 15px 15px;
264 text-align: left;
265}
266
267#biohazard_dialog form {
268 width: 400px;
269}
270
271#biohazard_dialog p.submit {
272 margin-top: 40px;
273 margin-bottom: 20px;
274}
275
276#biohazard_dialog input[type="submit"] {
277 width: 180px;
278 margin-left: 5px;
279 margin-right: 5px;
280}
281
282#loader {
283 display: none;
284 position: fixed;
285 top: 0;
286 bottom: 0;
287 left: 0;
288 right: 0;
289 margin: auto;
290 width: 36px;
291 height: 36px;
292}
293
294#loader img {
295 width: 36px;
296 animation: rotation 3s infinite linear;
297}
298
299#thread {
300 padding-top: 1px;
301}
302
303#thread.overlay {
304 filter: blur(8px);
305}
306
307#thread header h2 {
308 margin-left: 20px;
309 margin-top: 40px;
310 margin-bottom: 50px;
311 font-size: 18pt;
312}
313
314#thread.quotes .post {
315 padding-bottom: 5px;
316}
317
318#thread.hashtag .post {
319 padding-bottom: 10px;
320 border-bottom: 1px solid #ddd;
321}
322
323#thread.notifications .post {
324 padding-bottom: 4px;
325 border-bottom: 1px solid #ddd;
326 margin-top: 24px;
327}
328
329#thread.notifications .back {
330 margin-left: 22px;
331 margin-bottom: -12px;
332 margin-top: 15px;
333}
334
335#thread.notifications .back, #thread.notifications .back a {
336 font-size: 10pt;
337}
338
339#thread.notifications .back i {
340 font-size: 9pt;
341 margin-right: 2px;
342}
343
344#thread + p.note {
345 margin-top: 30px;
346 margin-left: 15px;
347 font-size: 11pt;
348 color: #666;
349}
350
351.back, .back a {
352 font-size: 11pt;
353 color: #666;
354}
355
356.back i {
357 margin-right: 2px;
358}
359
360p.back i {
361 font-size: 10pt;
362 color: #888;
363 margin-right: 5px;
364}
365
366.post {
367 position: relative;
368 padding-left: 21px;
369 margin-top: 30px;
370}
371
372.post .edge {
373 position: absolute;
374 left: -2px;
375 top: 30px;
376 bottom: 0px;
377 width: 6px;
378}
379
380.post .edge .line {
381 position: absolute;
382 left: 2px;
383 top: 0px;
384 bottom: 0px;
385 border-left: 1px solid #aaa;
386}
387
388.post .edge:hover .line {
389 border-left: 2px solid #888;
390}
391
392.post .plus {
393 position: absolute;
394 top: 8px;
395 left: -6px;
396 width: 14px;
397}
398
399.post.collapsed .line {
400 display: none;
401}
402
403.post.collapsed .content {
404 display: none;
405}
406
407.post.flat {
408 padding-left: 0px;
409 margin-top: 25px;
410}
411
412.post.flat > .margin {
413 display: none;
414}
415
416.post .avatar {
417 width: 32px;
418 height: 32px;
419 border-radius: 16px;
420 vertical-align: middle;
421 margin-bottom: 3px;
422 margin-right: 8px;
423}
424
425.post .missing {
426 color: #aaa;
427 background-color: #eee;
428 border-radius: 16px;
429 vertical-align: middle;
430 margin-right: 8px;
431}
432
433.post.muted .missing {
434 color: #bbb;
435}
436
437.post h2 {
438 font-size: 12pt;
439 margin-bottom: 0;
440}
441
442.post h2 .handle {
443 color: #888;
444 font-weight: normal;
445 font-size: 11pt;
446 vertical-align: text-top;
447}
448
449.post h2 .separator, .post .blocked-header .separator, .blocked-header .separator {
450 color: #888;
451 font-weight: normal;
452 font-size: 11pt;
453 vertical-align: text-top;
454}
455
456.post h2 .time {
457 color: #666;
458 font-weight: normal;
459 font-size: 10pt;
460 vertical-align: text-top;
461}
462
463.post h2 .action, .post .blocked-header .action, .blocked-header .action {
464 color: #888;
465 font-weight: normal;
466 font-size: 10pt;
467 vertical-align: text-top;
468}
469
470.post h2 .action:hover, .post .blocked-header .action:hover, .blocked-header .action:hover {
471 color: #444;
472}
473
474.post h2 img.mastodon {
475 width: 15px;
476 position: relative;
477 top: 2px;
478 margin-left: 3px;
479}
480
481.post p {
482 margin-top: 10px;
483}
484
485.post div.body p + p {
486 margin-top: 18px;
487}
488
489.post .quote-embed {
490 border: 1px solid #ddd;
491 border-radius: 8px;
492 background-color: #fbfcfd;
493 margin-top: 25px;
494 margin-bottom: 15px;
495 margin-left: 0px;
496 max-width: 800px;
497}
498
499.post .quote-embed .post {
500 margin-top: 16px;
501 padding-left: 16px;
502 padding-right: 16px;
503 padding-bottom: 5px;
504}
505
506.post .quote-embed .placeholder {
507 font-style: italic;
508 font-size: 11pt;
509 color: #888;
510}
511
512.post-quotes .post-quote .quote-embed {
513 display: none;
514}
515
516.post-quotes .post-quote p.stats {
517 display: none;
518}
519
520.post .image-alt {
521 font-size: 11pt;
522 color: #666;
523 margin-bottom: 20px;
524}
525
526.post .image-alt summary {
527 font-size: 11pt;
528 color: #666;
529 margin-bottom: 5px;
530 user-select: none;
531 -webkit-user-select: none;
532 cursor: default;
533}
534
535.post.blocked p, .post.blocked a {
536 font-size: 11pt;
537 color: #666;
538}
539
540.post.blocked .blocked-header i {
541 margin-right: 2px;
542}
543
544.post.muted > h2, .post.muted > .content > details > p, .post.muted > .content > details summary {
545 opacity: 0.3;
546}
547
548.post.muted > h2 {
549 font-weight: 600;
550}
551
552.post.muted details {
553 margin-top: 12px;
554 margin-bottom: 10px;
555}
556
557.post.muted details summary {
558 font-size: 10pt;
559 user-select: none;
560 -webkit-user-select: none;
561 cursor: default;
562}
563
564.post a.link-card {
565 display: block;
566 position: relative;
567 max-width: 500px;
568 margin-bottom: 12px;
569}
570
571.post a.link-card:hover {
572 text-decoration: none;
573}
574
575.post a.link-card > div {
576 background-color: #fcfcfd;
577 border: 1px solid #d8d8d8;
578 border-radius: 8px;
579 padding: 11px 15px;
580}
581
582.post a.link-card:hover > div {
583 background-color: #f6f7f8;
584 border: 1px solid #c8c8c8;
585}
586
587.post a.link-card > div:not(:has(p.description)) {
588 padding-bottom: 14px;
589}
590
591.post a.link-card p.domain {
592 color: #888;
593 font-size: 10pt;
594 margin-top: 1px;
595 margin-bottom: 5px;
596}
597
598.post a.link-card h2 {
599 color: #333;
600 margin-top: 8px;
601}
602
603.post a.link-card p.description {
604 color: #666;
605 font-size: 11pt;
606 margin-top: 8px;
607 margin-bottom: 4px;
608 line-height: 135%;
609}
610
611.post a.link-card.record > div:has(.avatar) {
612 padding-left: 65px;
613}
614
615.post a.link-card.record h2 {
616 margin-top: 3px;
617}
618
619.post a.link-card.record .handle {
620 color: #666;
621 margin-left: 5px;
622}
623
624.post a.link-card.record .avatar {
625 width: 36px;
626 height: 36px;
627 border: 1px solid #ddd;
628 border-radius: 6px;
629 position: absolute;
630 top: 15px;
631 left: 15px;
632}
633
634.post a.link-card.record .stats {
635 margin-top: 9px;
636 margin-bottom: 1px;
637}
638
639.post a.link-card.record .stats i.fa-heart:hover {
640 color: #aaa;
641}
642
643.post .stats {
644 font-size: 10pt;
645 color: #666;
646}
647
648.post .stats a {
649 color: #666;
650 text-decoration: none;
651}
652
653.post .stats a:hover {
654 text-decoration: underline;
655}
656
657.post .stats i {
658 font-size: 9pt;
659 color: #888;
660}
661
662.post .stats i.fa-heart {
663 color: #aaa;
664}
665
666.post .stats i.fa-heart.liked {
667 color: #e03030;
668}
669
670.post .stats i.fa-heart:hover {
671 color: #888;
672 cursor: pointer;
673}
674
675.post .stats i.fa-heart.liked:hover {
676 color: #c02020;
677}
678
679.post .stats span {
680 margin-right: 10px;
681}
682
683.post img.loader {
684 width: 24px;
685 animation: rotation 3s infinite linear;
686 margin-top: 5px;
687}
688
689.post .tags a {
690 background-color: hsl(210, 90%, 97%);
691 border: 1px solid hsl(215, 90%, 85%);
692 border-radius: 6px;
693 padding: 3px 7px;
694 margin-right: 5px;
695 font-size: 10pt;
696 color: #333;
697}
698
699.post .tags a:hover {
700 text-decoration: none;
701 background-color: hsl(210, 90%, 93%);
702}
703
704.post p.hidden-replies {
705 margin-top: 20px;
706 font-size: 11pt;
707}
708
709.post p.hidden-replies a {
710 font-size: 12pt;
711 color: saddlebrown;
712}
713
714.post p.missing-replies-info {
715 font-size: 11pt;
716 color: darkred;
717 margin-top: 25px;
718}
719
720#posting_stats_page {
721 display: none;
722}
723
724#posting_stats_page input[type="radio"] {
725 position: relative;
726 top: -1px;
727}
728
729#posting_stats_page label {
730 user-select: none;
731 -webkit-user-select: none;
732}
733
734#posting_stats_page input:disabled + label {
735 color: #999;
736}
737
738#posting_stats_page input[type="range"] {
739 width: 250px;
740 vertical-align: middle;
741}
742
743#posting_stats_page input[type="submit"] {
744 font-size: 12pt;
745 margin: 5px 0px;
746 padding: 5px 10px;
747}
748
749#posting_stats_page progress {
750 width: 300px;
751 margin-left: 10px;
752 vertical-align: middle;
753 display: none;
754}
755
756#posting_stats_page .scan-result {
757 border: 1px solid #333;
758 border-collapse: collapse;
759 display: none;
760}
761
762#posting_stats_page .scan-result td, #posting_stats_page .scan-result th {
763 border: 1px solid #333;
764 padding: 5px 8px;
765}
766
767#posting_stats_page .scan-result td {
768 text-align: right;
769}
770
771#posting_stats_page .scan-result th {
772 text-align: center;
773 background-color: hsl(207, 100%, 86%);
774 padding: 7px 10px;
775}
776
777#posting_stats_page .scan-result td.handle {
778 text-align: left;
779}
780
781#posting_stats_page .scan-result .avatar {
782 width: 24px;
783 border-radius: 14px;
784 vertical-align: middle;
785 margin-right: 2px;
786 padding: 2px;
787}
788
789#posting_stats_page .scan-result td.no {
790 font-weight: bold;
791}
792
793#posting_stats_page .scan-result td.percent {
794 min-width: 50px;
795}
796
797@media (prefers-color-scheme: dark) {
798 body {
799 background-color: rgb(39, 39, 37);
800 color: #eee;
801 }
802
803 a {
804 color: rgb(0, 133, 255);
805 }
806
807 a:visited {
808 color: rgb(0, 133, 255);
809 }
810
811 #loader {
812 filter: invert();
813 }
814
815 #search form {
816 border-color: hsl(210, 40%, 60%);
817 }
818
819 #search form input {
820 background-color: transparent;
821 }
822
823 #account_menu {
824 background: hsl(210, 33.33%, 94.0%);
825 border-color: #ccc;
826 }
827
828 #account_menu li a {
829 color: #333;
830 border-color: #bbb;
831 background-color: hsla(210, 100%, 4%, 0.12);
832 }
833
834 #account_menu li a:hover {
835 background-color: hsla(210, 100%, 4%, 0.2);
836 }
837
838 #login {
839 background-color: rgba(240, 240, 240, 0.15);
840 }
841
842 #login form {
843 border-color: hsl(210, 20%, 40%);
844 background-color: hsl(210, 12%, 25%);
845 }
846
847 #login .close {
848 color: hsl(210, 20%, 50%);
849 opacity: 0.6;
850 }
851
852 #login .close:hover {
853 color: hsl(210, 20%, 50%);
854 opacity: 1.0;
855 }
856
857 #login p.info a {
858 color: #888;
859 }
860
861 #login input[type="text"], #login input[type="password"] {
862 border-color: #666;
863 }
864
865 #login input[type="submit"] {
866 border-color: hsl(210, 15%, 40%);
867 background-color: hsl(210, 12%, 35%);
868 }
869
870 #login input[type="submit"]:active {
871 border-color: hsl(210, 15%, 35%);
872 background-color: hsl(210, 12%, 30%);
873 }
874
875 #login #cloudy {
876 color: hsl(210, 60%, 75%);
877 }
878
879 #login .info-box {
880 border-color: hsl(45, 100%, 45%);
881 background-color: hsl(50, 40%, 30%);
882 }
883
884 #login .info-box a {
885 color: hsl(45, 100%, 50%);
886 }
887
888 #github {
889 filter: invert();
890 }
891
892 .back, .back a {
893 color: #888;
894 }
895
896 p.back i {
897 color: #888;
898 }
899
900 .post h2 .handle {
901 color: #888;
902 }
903
904 .post h2 .separator {
905 color: #888;
906 }
907
908 .post h2 .time {
909 color: #aaa;
910 }
911
912 .post h2 .action {
913 color: #888;
914 }
915
916 .post .quote-embed {
917 background-color: #303030;
918 border-color: #606060;
919 }
920
921 .post .image-alt, .post .image-alt summary {
922 color: #999;
923 }
924
925 .post.blocked p, .post.blocked a {
926 color: #aaa;
927 }
928
929 .post .edge .line {
930 border-left-color: #666;
931 }
932
933 .post .edge:hover .line {
934 border-left-color: #888;
935 }
936
937 .post .plus {
938 filter: invert();
939 }
940
941 .post .stats {
942 color: #aaa;
943 }
944
945 .post .stats i {
946 color: #888;
947 }
948
949 .post .stats i.fa-heart {
950 color: #aaa;
951 }
952
953 .post .stats i.fa-heart.liked {
954 color: #f04040;
955 }
956
957 .post .stats i.fa-heart:hover {
958 color: #eee;
959 }
960
961 .post .stats i.fa-heart.liked:hover {
962 color: #ff7070;
963 }
964
965 #posting_stats_page input:disabled + label {
966 color: #777;
967 }
968
969 #posting_stats_page .scan-result, #posting_stats_page .scan-result td, #posting_stats_page .scan-result th {
970 border-color: #888;
971 }
972
973 #posting_stats_page .scan-result th {
974 background-color: hsl(207, 90%, 25%);
975 }
976}