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="range"] {
725 width: 250px;
726 vertical-align: middle;
727}
728
729#posting_stats_page .scan-result {
730 border: 1px solid #333;
731 border-collapse: collapse;
732}
733
734#posting_stats_page .scan-result td, #posting_stats_page .scan-result th {
735 border: 1px solid #333;
736 padding: 5px 8px;
737}
738
739#posting_stats_page .scan-result td {
740 text-align: right;
741}
742
743#posting_stats_page .scan-result th {
744 text-align: center;
745}
746
747#posting_stats_page .scan-result td.handle {
748 text-align: left;
749}
750
751@media (prefers-color-scheme: dark) {
752 body {
753 background-color: rgb(39, 39, 37);
754 color: #eee;
755 }
756
757 a {
758 color: rgb(0, 133, 255);
759 }
760
761 a:visited {
762 color: rgb(0, 133, 255);
763 }
764
765 #loader {
766 filter: invert();
767 }
768
769 #search form {
770 border-color: hsl(210, 40%, 60%);
771 }
772
773 #search form input {
774 background-color: transparent;
775 }
776
777 #account_menu {
778 background: hsl(210, 33.33%, 94.0%);
779 border-color: #ccc;
780 }
781
782 #account_menu li a {
783 color: #333;
784 border-color: #bbb;
785 background-color: hsla(210, 100%, 4%, 0.12);
786 }
787
788 #account_menu li a:hover {
789 background-color: hsla(210, 100%, 4%, 0.2);
790 }
791
792 #login {
793 background-color: rgba(240, 240, 240, 0.15);
794 }
795
796 #login form {
797 border-color: hsl(210, 20%, 40%);
798 background-color: hsl(210, 12%, 25%);
799 }
800
801 #login .close {
802 color: hsl(210, 20%, 50%);
803 opacity: 0.6;
804 }
805
806 #login .close:hover {
807 color: hsl(210, 20%, 50%);
808 opacity: 1.0;
809 }
810
811 #login p.info a {
812 color: #888;
813 }
814
815 #login input[type="text"], #login input[type="password"] {
816 border-color: #666;
817 }
818
819 #login input[type="submit"] {
820 border-color: hsl(210, 15%, 40%);
821 background-color: hsl(210, 12%, 35%);
822 }
823
824 #login input[type="submit"]:active {
825 border-color: hsl(210, 15%, 35%);
826 background-color: hsl(210, 12%, 30%);
827 }
828
829 #login #cloudy {
830 color: hsl(210, 60%, 75%);
831 }
832
833 #login .info-box {
834 border-color: hsl(45, 100%, 45%);
835 background-color: hsl(50, 40%, 30%);
836 }
837
838 #login .info-box a {
839 color: hsl(45, 100%, 50%);
840 }
841
842 #github {
843 filter: invert();
844 }
845
846 .back, .back a {
847 color: #888;
848 }
849
850 p.back i {
851 color: #888;
852 }
853
854 .post h2 .handle {
855 color: #888;
856 }
857
858 .post h2 .separator {
859 color: #888;
860 }
861
862 .post h2 .time {
863 color: #aaa;
864 }
865
866 .post h2 .action {
867 color: #888;
868 }
869
870 .post .quote-embed {
871 background-color: #303030;
872 border-color: #606060;
873 }
874
875 .post .image-alt, .post .image-alt summary {
876 color: #999;
877 }
878
879 .post.blocked p, .post.blocked a {
880 color: #aaa;
881 }
882
883 .post .edge .line {
884 border-left-color: #666;
885 }
886
887 .post .edge:hover .line {
888 border-left-color: #888;
889 }
890
891 .post .plus {
892 filter: invert();
893 }
894
895 .post .stats {
896 color: #aaa;
897 }
898
899 .post .stats i {
900 color: #888;
901 }
902
903 .post .stats i.fa-heart {
904 color: #aaa;
905 }
906
907 .post .stats i.fa-heart.liked {
908 color: #f04040;
909 }
910
911 .post .stats i.fa-heart:hover {
912 color: #eee;
913 }
914
915 .post .stats i.fa-heart.liked:hover {
916 color: #ff7070;
917 }
918}