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#login {
147 visibility: hidden;
148 position: fixed;
149 top: 0;
150 bottom: 0;
151 left: 0;
152 right: 0;
153 display: flex;
154 align-items: center;
155 justify-content: center;
156 padding-bottom: 5%;
157 z-index: 10;
158 background-color: rgba(240, 240, 240, 0.4);
159}
160
161#login.expanded {
162 padding-bottom: 0;
163}
164
165#login form {
166 position: relative;
167 border: 2px solid hsl(210, 100%, 85%);
168 background-color: hsl(210, 100%, 98%);
169 border-radius: 10px;
170 padding: 15px 25px;
171}
172
173#login .close {
174 position: absolute;
175 top: 5px;
176 right: 5px;
177 color: hsl(210, 100%, 75%);
178 opacity: 0.6;
179}
180
181#login .close:hover {
182 color: hsl(210, 100%, 65%);
183 opacity: 1.0;
184}
185
186#login p {
187 text-align: center;
188}
189
190#login h2 {
191 font-size: 13pt;
192 font-weight: 600;
193 text-align: center;
194 margin-bottom: 25px;
195 padding-right: 10px;
196}
197
198#login p.submit {
199 margin-top: 25px;
200}
201
202#login p.info {
203 font-size: 9pt;
204}
205
206#login p.info a {
207 color: #666;
208}
209
210#login input[type="text"], #login input[type="password"] {
211 width: 200px;
212 font-size: 11pt;
213 border: 1px solid #d6d6d6;
214 border-radius: 4px;
215 padding: 5px 6px;
216 margin: 0px 15px;
217}
218
219#login input[type="submit"] {
220 width: 150px;
221 font-size: 11pt;
222 border: 1px solid hsl(210, 90%, 85%);
223 background-color: hsl(210, 100%, 92%);
224 border-radius: 4px;
225 padding: 5px 6px;
226}
227
228#login input[type="submit"]:active {
229 background-color: hsl(210, 100%, 90%);
230}
231
232#login #cloudy {
233 color: hsl(210, 60%, 75%);
234 margin: 14px 0px;
235 display: none;
236}
237
238#login .info-box {
239 display: none;
240 border: 1px solid hsl(45, 100%, 60%);
241 background-color: hsl(50, 100%, 96%);
242 width: 360px;
243 font-size: 11pt;
244 border-radius: 6px;
245}
246
247#login.expanded .info-box {
248 display: block;
249}
250
251#login .info-box p {
252 margin: 15px 15px;
253 line-height: 125%;
254 text-align: left;
255}
256
257#loader {
258 display: none;
259 position: fixed;
260 top: 0;
261 bottom: 0;
262 left: 0;
263 right: 0;
264 margin: auto;
265 width: 36px;
266 height: 36px;
267}
268
269#loader img {
270 width: 36px;
271 animation: rotation 3s infinite linear;
272}
273
274#thread {
275 padding-top: 1px;
276}
277
278#thread.overlay {
279 filter: blur(8px);
280}
281
282#thread header h2 {
283 margin-left: 20px;
284 margin-top: 40px;
285 margin-bottom: 50px;
286 font-size: 18pt;
287}
288
289#thread.quotes .post {
290 padding-bottom: 5px;
291}
292
293#thread.hashtag .post {
294 padding-bottom: 10px;
295 border-bottom: 1px solid #ddd;
296}
297
298#thread + p.note {
299 margin-top: 30px;
300 margin-left: 15px;
301 font-size: 11pt;
302 color: #666;
303}
304
305.back, .back a {
306 font-size: 11pt;
307 color: #666;
308}
309
310.back i {
311 margin-right: 2px;
312}
313
314p.back i {
315 font-size: 10pt;
316 color: #888;
317 margin-right: 5px;
318}
319
320.post {
321 position: relative;
322 padding-left: 21px;
323 margin-top: 30px;
324}
325
326.post .edge {
327 position: absolute;
328 left: -2px;
329 top: 30px;
330 bottom: 0px;
331 width: 6px;
332}
333
334.post .edge .line {
335 position: absolute;
336 left: 2px;
337 top: 0px;
338 bottom: 0px;
339 border-left: 1px solid #aaa;
340}
341
342.post .edge:hover .line {
343 border-left: 2px solid #888;
344}
345
346.post.collapsed .line {
347 display: none;
348}
349
350.post.collapsed .content {
351 display: none;
352}
353
354.post.flat {
355 padding-left: 0px;
356 margin-top: 25px;
357}
358
359.post.flat > .edge {
360 display: none;
361}
362
363.post .avatar {
364 width: 32px;
365 height: 32px;
366 border-radius: 16px;
367 vertical-align: middle;
368 margin-bottom: 3px;
369 margin-right: 8px;
370}
371
372.post .missing {
373 color: #aaa;
374 background-color: #eee;
375 border-radius: 16px;
376 vertical-align: middle;
377 margin-right: 8px;
378}
379
380.post.muted .missing {
381 color: #bbb;
382}
383
384.post .plus {
385 position: absolute;
386 top: 8px;
387 left: -6px;
388 width: 14px;
389}
390
391.post.flat > .plus {
392 display: none;
393}
394
395.post h2 {
396 font-size: 12pt;
397 margin-bottom: 0;
398}
399
400.post h2 .handle {
401 color: #888;
402 font-weight: normal;
403 font-size: 11pt;
404 vertical-align: text-top;
405}
406
407.post h2 .separator {
408 color: #888;
409 font-weight: normal;
410 font-size: 11pt;
411 vertical-align: text-top;
412}
413
414.post h2 .time {
415 color: #666;
416 font-weight: normal;
417 font-size: 10pt;
418 vertical-align: text-top;
419}
420
421.post h2 .action {
422 color: #888;
423 font-weight: normal;
424 font-size: 10pt;
425 vertical-align: text-top;
426}
427
428.post h2 img.mastodon {
429 width: 15px;
430 position: relative;
431 top: 2px;
432 margin-left: 3px;
433}
434
435.post p {
436 margin-top: 10px;
437}
438
439.post div.body p + p {
440 margin-top: 18px;
441}
442
443.post .quote-embed {
444 border: 1px solid #ddd;
445 border-radius: 8px;
446 background-color: #fbfcfd;
447 margin-top: 25px;
448 margin-bottom: 15px;
449 margin-left: 0px;
450 max-width: 800px;
451}
452
453.post .quote-embed .post {
454 margin-top: 16px;
455 padding-left: 16px;
456 padding-right: 16px;
457 padding-bottom: 5px;
458}
459
460.post .quote-embed .placeholder {
461 font-style: italic;
462 font-size: 11pt;
463 color: #888;
464}
465
466.post .image-alt {
467 font-size: 11pt;
468 color: #666;
469 margin-bottom: 20px;
470}
471
472.post .image-alt summary {
473 font-size: 11pt;
474 color: #666;
475 margin-bottom: 5px;
476 user-select: none;
477 -webkit-user-select: none;
478 cursor: default;
479}
480
481.post.blocked p, .post.blocked a {
482 font-size: 11pt;
483 color: #666;
484}
485
486.post.blocked .blocked-header i {
487 margin-right: 2px;
488}
489
490.post.muted > h2, .post.muted > .content > details > p, .post.muted > .content > details summary {
491 opacity: 0.3;
492}
493
494.post.muted > h2 {
495 font-weight: 600;
496}
497
498.post.muted details {
499 margin-top: 12px;
500 margin-bottom: 10px;
501}
502
503.post.muted details summary {
504 font-size: 10pt;
505 user-select: none;
506 -webkit-user-select: none;
507 cursor: default;
508}
509
510.post a.link-card {
511 display: block;
512 position: relative;
513 max-width: 500px;
514 margin-bottom: 12px;
515}
516
517.post a.link-card:hover {
518 text-decoration: none;
519}
520
521.post a.link-card > div {
522 background-color: #fcfcfd;
523 border: 1px solid #d8d8d8;
524 border-radius: 8px;
525 padding: 11px 15px;
526}
527
528.post a.link-card:hover > div {
529 background-color: #f6f7f8;
530 border: 1px solid #c8c8c8;
531}
532
533.post a.link-card > div:not(:has(p.description)) {
534 padding-bottom: 14px;
535}
536
537.post a.link-card p.domain {
538 color: #888;
539 font-size: 10pt;
540 margin-top: 1px;
541 margin-bottom: 5px;
542}
543
544.post a.link-card h2 {
545 color: #333;
546 margin-top: 8px;
547}
548
549.post a.link-card p.description {
550 color: #666;
551 font-size: 11pt;
552 margin-top: 8px;
553 margin-bottom: 4px;
554 line-height: 135%;
555}
556
557.post a.link-card.record > div:has(.avatar) {
558 padding-left: 65px;
559}
560
561.post a.link-card.record h2 {
562 margin-top: 3px;
563}
564
565.post a.link-card.record .handle {
566 color: #666;
567 margin-left: 5px;
568}
569
570.post a.link-card.record .avatar {
571 width: 36px;
572 height: 36px;
573 border: 1px solid #ddd;
574 border-radius: 6px;
575 position: absolute;
576 top: 15px;
577 left: 15px;
578}
579
580.post a.link-card.record .stats {
581 margin-top: 9px;
582 margin-bottom: 1px;
583}
584
585.post a.link-card.record .stats i.fa-heart:hover {
586 color: #aaa;
587}
588
589.post .stats {
590 font-size: 10pt;
591 color: #666;
592}
593
594.post .stats a {
595 color: #666;
596 text-decoration: none;
597}
598
599.post .stats a:hover {
600 text-decoration: underline;
601}
602
603.post .stats i {
604 font-size: 9pt;
605 color: #888;
606}
607
608.post .stats i.fa-heart {
609 color: #aaa;
610}
611
612.post .stats i.fa-heart.liked {
613 color: #e03030;
614}
615
616.post .stats i.fa-heart:hover {
617 color: #888;
618 cursor: pointer;
619}
620
621.post .stats i.fa-heart.liked:hover {
622 color: #c02020;
623}
624
625.post .stats span {
626 margin-right: 10px;
627}
628
629.post img.loader {
630 width: 24px;
631 animation: rotation 3s infinite linear;
632 margin-top: 5px;
633}
634
635@media (prefers-color-scheme: dark) {
636 body {
637 background-color: rgb(39, 39, 37);
638 color: #eee;
639 }
640
641 a {
642 color: rgb(0, 133, 255);
643 }
644
645 a:visited {
646 color: rgb(0, 133, 255);
647 }
648
649 #loader {
650 filter: invert();
651 }
652
653 #search form {
654 border-color: hsl(210, 40%, 60%);
655 }
656
657 #search form input {
658 background-color: transparent;
659 }
660
661 #account_menu {
662 background: hsl(210, 33.33%, 94.0%);
663 border-color: #ccc;
664 }
665
666 #account_menu li a {
667 color: #333;
668 border-color: #bbb;
669 background-color: hsla(210, 100%, 4%, 0.12);
670 }
671
672 #account_menu li a:hover {
673 background-color: hsla(210, 100%, 4%, 0.2);
674 }
675
676 #login {
677 background-color: rgba(240, 240, 240, 0.15);
678 }
679
680 #login form {
681 border-color: hsl(210, 20%, 40%);
682 background-color: hsl(210, 12%, 25%);
683 }
684
685 #login .close {
686 color: hsl(210, 20%, 50%);
687 opacity: 0.6;
688 }
689
690 #login .close:hover {
691 color: hsl(210, 20%, 50%);
692 opacity: 1.0;
693 }
694
695 #login p.info a {
696 color: #888;
697 }
698
699 #login input[type="text"], #login input[type="password"] {
700 border-color: #666;
701 }
702
703 #login input[type="submit"] {
704 border-color: hsl(210, 15%, 40%);
705 background-color: hsl(210, 12%, 35%);
706 }
707
708 #login input[type="submit"]:active {
709 border-color: hsl(210, 15%, 35%);
710 background-color: hsl(210, 12%, 30%);
711 }
712
713 #login #cloudy {
714 color: hsl(210, 60%, 75%);
715 }
716
717 #login .info-box {
718 border-color: hsl(45, 100%, 45%);
719 background-color: hsl(50, 40%, 30%);
720 }
721
722 #login .info-box a {
723 color: hsl(45, 100%, 50%);
724 }
725
726 #github {
727 filter: invert();
728 }
729
730 .back, .back a {
731 color: #888;
732 }
733
734 p.back i {
735 color: #888;
736 }
737
738 .post h2 .handle {
739 color: #888;
740 }
741
742 .post h2 .separator {
743 color: #888;
744 }
745
746 .post h2 .time {
747 color: #aaa;
748 }
749
750 .post h2 .action {
751 color: #888;
752 }
753
754 .post .quote-embed {
755 background-color: #303030;
756 border-color: #606060;
757 }
758
759 .post .image-alt, .post .image-alt summary {
760 color: #999;
761 }
762
763 .post.blocked p, .post.blocked a {
764 color: #aaa;
765 }
766
767 .post .edge .line {
768 border-left-color: #666;
769 }
770
771 .post .edge:hover .line {
772 border-left-color: #888;
773 }
774
775 .post .plus {
776 filter: invert();
777 }
778
779 .post .stats {
780 color: #aaa;
781 }
782
783 .post .stats i {
784 color: #888;
785 }
786
787 .post .stats i.fa-heart {
788 color: #aaa;
789 }
790
791 .post .stats i.fa-heart.liked {
792 color: #f04040;
793 }
794
795 .post .stats i.fa-heart:hover {
796 color: #eee;
797 }
798
799 .post .stats i.fa-heart.liked:hover {
800 color: #ff7070;
801 }
802}