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}