tuiter 2006
at main 2053 lines 60 kB view raw
1.qt-label-link, .rt-label-link { 2 text-decoration: none; 3 color: var(--tuiter-muted); 4 cursor: pointer; 5} 6.qt-label-link:hover, .rt-label-link:hover { 7 color: var(--tuiter-text); 8 text-decoration: none; 9} 10/* Quoted/Retweeted tweet box */ 11.quoted-tweet, .retweeted-tweet { 12 margin: 2px 0 0 8px; 13 padding: 6px 8px; 14 background: var(--tuiter-surface-warm); 15 border-radius: 8px; 16 display: flex; 17 align-items: center; 18} 19 20/* QT/RT label */ 21.qt-label, .rt-label { 22 font-size: 1.1em; 23 font-weight: 600; 24 color: var(--tuiter-muted); 25 margin-right: 8px; 26} 27 28/* Quoted/retweeted avatar */ 29.quoted-avatar, .retweeted-avatar { 30 display: inline-block; 31 vertical-align: middle; 32 margin-right: 6px; 33} 34.quoted-avatar-img, .retweeted-avatar-img { 35 width: 24px; 36 height: 24px; 37 border-radius: 8px; 38 object-fit: cover; 39} 40 41/* Quoted/retweeted author name */ 42.quoted-author-name, .retweeted-author-name { 43 font-weight: bold; 44 color: var(--tuiter-text); 45 margin-right: 6px; 46 text-decoration: none; 47 font-size: 11px; 48} 49.quoted-text, .retweeted-text { 50 color: var(--tuiter-text); 51} 52/* Sidebar background color for profile header fallback */ 53.sidebar-bg { 54 background-color: var(--tuiter-sidebar-bg); 55} 56/* Profile header background */ 57.profile-header-bg { 58 position: relative; 59 width: 100%; 60 min-height: 260px; 61 background-size: cover; 62 background-position: center; 63} 64 65.profile-header-bg-overlay { 66 position: absolute; 67 inset: 0; 68 background: rgba(var(--tuiter-media-black-rgb),0.15); 69} 70 71.profile-header-content { 72 position: relative; 73 z-index: 1; 74 display: flex; 75 flex-direction: row; 76 align-items: flex-start; 77 gap: 16px; 78 padding: 24px; 79} 80 81.profile-main { 82 color: var(--tuiter-white); 83 display: flex; 84 flex-direction: column; 85 justify-content: flex-end; 86 height: 100%; 87} 88 89.profile-names { 90 margin-bottom: 0.7em; 91} 92 93.profile-displayname { 94 margin-bottom: 0.2em; 95 font-size: 2.2em; 96 font-weight: bold; 97} 98 99.handle { 100 font-size: 2em; 101 font-weight: bold; 102 color: var(--tuiter-text); 103 background: rgba(var(--tuiter-white-rgb),0.85); 104 padding: 0.2em 0.5em; 105 border-radius: 8px; 106 box-shadow: 0 1px 4px rgba(var(--tuiter-media-black-rgb),0.12); 107 display: inline-block; 108} 109 110.profile-update-box { 111 text-shadow: none; 112 margin-top: 2.5em; 113} 114/* 2006 Twitter Tribute - Authentic Styling */ 115 116* { 117 margin: 0; 118 padding: 0; 119 box-sizing: border-box; 120} 121 122body { 123 background-color: var(--tuiter-bg); 124 background-image: radial-gradient(circle at 10% 10%, rgba(var(--tuiter-white-rgb),0.10) 0.35rem, transparent 0.5rem), 125 radial-gradient(circle at 90% 20%, rgba(var(--tuiter-white-rgb),0.08) 0.45rem, transparent 0.6rem), 126 radial-gradient(circle at 30% 80%, rgba(var(--tuiter-white-rgb),0.06) 0.25rem, transparent 0.4rem); 127 font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, sans-serif; 128 font-size: 11px; 129 color: var(--tuiter-text); 130 min-height: 100vh; 131} 132 133/* Header with logo */ 134.header { 135 background: var(--tuiter-bg); 136 padding: 8px 12px; 137 border-bottom: 1px solid var(--tuiter-header-accent); 138 display: flex; 139 justify-content: space-between; 140 align-items: center; 141} 142 143.header h1 { 144 margin: 0; 145 font-size: 24px; 146 font-weight: bold; 147} 148 149.header h1 a { 150 color: var(--tuiter-white); 151 text-decoration: none; 152 text-shadow: 1px 1px 2px rgba(var(--tuiter-media-black-rgb),0.3); 153} 154 155/* Header navigation */ 156.header-nav { 157 font-size: 11px; 158} 159 160.header-nav a { 161 color: var(--tuiter-text); 162 text-decoration: none; 163 margin: 0 2px; 164} 165 166.header-nav a:hover { 167 text-decoration: underline; 168} 169 170/* Search area in header */ 171.search-area { 172 position: absolute; 173 top: 20px; 174 right: 20px; 175 font-size: 11px; 176} 177 178.search-area input[type="text"] { 179 width: 150px; 180 padding: 2px 4px; 181 border: 1px solid var(--tuiter-border-muted); 182 font-size: 11px; 183 background: var(--tuiter-white); 184} 185 186.search-area button { 187 padding: 2px 6px; 188 border: 1px solid var(--tuiter-border-muted); 189 background: var(--tuiter-input-bg); 190 font-size: 11px; 191 cursor: pointer; 192 margin-left: 2px; 193} 194 195.search-area a { 196 color: var(--tuiter-link); 197 text-decoration: none; 198 margin-left: 5px; 199} 200 201.search-area a:hover { 202 text-decoration: underline; 203} 204 205/* Main container */ 206.container { 207 max-width: 1000px; 208 margin: 0 auto; 209 padding: 0 20px; 210} 211 212/* Two column layout */ 213.main-content { 214 display: flex; 215 gap: 20px; 216 align-items: flex-start; 217} 218 219/* Left column - main content */ 220.content { 221 flex: 1; 222 background: var(--tuiter-card); 223 border-radius: 10px; 224 padding: 20px; 225 box-shadow: 0 2px 5px rgba(var(--tuiter-media-black-rgb),0.1); 226 min-height: 400px; 227 max-width: 80%; 228} 229 230/* Right column - sidebar */ 231.sidebar { 232 width: 250px; 233 background: var(--tuiter-sidebar-bg); 234 border-radius: 10px; 235 padding: 15px; 236 box-shadow: 0 2px 5px rgba(var(--tuiter-media-black-rgb),0.1); 237} 238 239/* Welcome message */ 240.welcome-message { 241 font-size: 13px; 242 line-height: 1.4; 243 margin-bottom: 15px; 244 color: var(--tuiter-text); 245} 246 247.welcome-message .highlight { 248 background-color: var(--tuiter-highlight); 249 padding: 1px 2px; 250} 251 252/* Timeline styles */ 253.timeline-intro { 254 font-size: 12px; 255 margin-bottom: 20px; 256 color: var(--tuiter-muted); 257} 258 259.timeline-intro a { 260 color: var(--tuiter-link); 261 text-decoration: underline; 262} 263 264.post { 265 border-bottom: 1px solid var(--tuiter-divider); 266 padding: 12px 0; 267 display: flex; 268 gap: 10px; 269} 270 271.post-avatar img { 272 width: 24px; 273 height: 24px; 274 background: var(--tuiter-avatar-bg); 275 border: 1px solid var(--tuiter-border-muted); 276 border-radius: 2px; 277 flex-shrink: 0; 278 display: flex; 279 align-items: center; 280 justify-content: center; 281 font-size: 10px; 282 color: var(--tuiter-muted); 283} 284 285.post-author { 286 font-weight: bold; 287 color: var(--tuiter-link); 288 text-decoration: none; 289 font-size: 11px; 290} 291 292.post-author:hover { 293 text-decoration: underline; 294} 295 296.post-text { 297 margin-top: 2px; 298 font-size: 11px; 299 line-height: 1.3; 300 color: var(--tuiter-text); 301} 302 303.post-meta { 304 font-size: 10px; 305 color: var(--tuiter-muted); 306 margin-top: 3px; 307} 308 309.post-meta a { 310 color: var(--tuiter-link); 311 text-decoration: none; 312} 313 314.post-meta a:hover { 315 text-decoration: underline; 316} 317 318/* Sidebar styles */ 319.sidebar h3 { 320 font-size: 12px; 321 font-weight: bold; 322 color: var(--tuiter-text); 323 margin-bottom: 10px; 324 border-bottom: 1px solid rgba(var(--tuiter-media-black-rgb),0.08); 325 padding-bottom: 3px; 326} 327 328/* About section */ 329.about-section { 330 margin-bottom: 20px; 331} 332 333.about-section .profile-pic { 334 width: 48px; 335 height: 48px; 336 float: left; 337 margin-right: 10px; 338 margin-bottom: 10px; 339} 340 341.about-section .profile-pic img { 342 width: 48px; 343 height: 48px; 344 border: 1px solid var(--tuiter-border-muted); 345 border-radius: 2px; 346} 347 348.about-section .profile-pic a { 349 display: flex; 350 align-items: center; 351 justify-content: center; 352 width: 48px; 353 height: 48px; 354 background: var(--tuiter-avatar-bg); 355 border: 1px solid var(--tuiter-border-muted); 356 border-radius: 2px; 357 font-size: 20px; 358 color: var(--tuiter-muted); 359 text-decoration: none; 360} 361 362.about-section .profile-info { 363 overflow: hidden; 364 font-size: 11px; 365 line-height: 1.3; 366} 367 368.about-section .profile-info strong a { 369 color: var(--tuiter-link); 370 text-decoration: none; 371} 372 373.about-section .profile-info strong a:hover { 374 text-decoration: underline; 375} 376 377.stats { 378 clear: both; 379 margin-top: 10px; 380 font-size: 11px; 381} 382 383.stat-line { 384 margin-bottom: 2px; 385} 386 387.stat-label { 388 color: var(--tuiter-muted); 389} 390 391.stat-value { 392 font-weight: bold; 393 color: var(--tuiter-text); 394} 395 396/* Following section */ 397.following-section { 398 margin-bottom: 20px; 399} 400 401.following-grid { 402 display: grid; 403 grid-template-columns: repeat(5, 1fr); 404 gap: 3px; 405 margin-top: 8px; 406} 407 408.following-avatar { 409 width: 36px; 410 height: 36px; 411} 412 413.following-avatar img { 414 width: 36px; 415 height: 36px; 416 border: 1px solid var(--tuiter-border-muted); 417 border-radius: 2px; 418} 419 420.following-avatar a { 421 display: flex; 422 align-items: center; 423 justify-content: center; 424 width: 36px; 425 height: 36px; 426 background: var(--tuiter-avatar-bg); 427 border: 1px solid var(--tuiter-border-muted); 428 border-radius: 2px; 429 font-size: 12px; 430 color: var(--tuiter-muted); 431 text-decoration: none; 432} 433 434/* Actions */ 435.actions { 436 margin-top: 15px; 437} 438 439.update-button { 440 display: block; 441 background: var(--tuiter-input-bg); 442 border: 1px solid var(--tuiter-border-muted); 443 padding: 6px 12px; 444 font-size: 11px; 445 color: var(--tuiter-text); 446 text-decoration: none; 447 text-align: center; 448 border-radius: 3px; 449 margin-bottom: 8px; 450} 451 452.update-button:hover { 453 background: rgba(var(--tuiter-media-black-rgb),0.03); 454} 455 456.logout-btn { 457 display: block; 458 font-size: 10px; 459 color: var(--tuiter-muted); 460 text-decoration: none; 461 text-align: center; 462} 463 464.logout-btn:hover { 465 text-decoration: underline; 466} 467 468/* Sign in form */ 469.signin-form { 470 margin-bottom: 20px; 471} 472 473.form-group { 474 margin-bottom: 8px; 475} 476 477.form-group label { 478 display: block; 479 font-size: 11px; 480 color: var(--tuiter-text); 481 margin-bottom: 2px; 482} 483 484.form-group input[type="text"], 485.form-group input[type="password"] { 486 width: 100%; 487 padding: 3px 4px; 488 border: 1px solid var(--tuiter-border-muted); 489 font-size: 11px; 490 background: var(--tuiter-white); 491} 492 493.form-group input[type="text"]:focus, 494.form-group input[type="password"]:focus { 495 outline: none; 496 border-color: var(--tuiter-link); 497} 498 499.checkbox-group { 500 margin: 8px 0; 501 font-size: 10px; 502} 503 504.checkbox-group input[type="checkbox"] { 505 margin-right: 4px; 506} 507 508.checkbox-group a { 509 color: var(--tuiter-link); 510 text-decoration: none; 511} 512 513.checkbox-group a:hover { 514 text-decoration: underline; 515} 516 517.signin-btn { 518 background: var(--tuiter-input-bg); 519 border: 1px solid var(--tuiter-border-muted); 520 padding: 4px 8px; 521 font-size: 11px; 522 cursor: pointer; 523 margin-bottom: 10px; 524} 525 526.signin-btn:hover { 527 background: rgba(var(--tuiter-media-black-rgb),0.03); 528} 529 530/* Join section */ 531.join-section { 532 text-align: center; 533 margin-bottom: 20px; 534} 535 536.join-link { 537 display: block; 538 background: var(--tuiter-join-bg); 539 color: var(--tuiter-dark-teal); 540 padding: 6px 8px; 541 text-decoration: none; 542 font-weight: bold; 543 font-size: 11px; 544 border-radius: 3px; 545 margin-bottom: 5px; 546} 547 548.join-link:hover { 549 background: var(--tuiter-join-hover); 550} 551 552.join-subtext { 553 font-size: 10px; 554 color: var(--tuiter-muted); 555 line-height: 1.2; 556} 557 558.join-subtext a { 559 color: var(--tuiter-link); 560 text-decoration: none; 561} 562 563.join-subtext a:hover { 564 text-decoration: underline; 565} 566 567/* Footer */ 568.footer { 569 text-align: center; 570 padding: 20px 0; 571 font-size: 10px; 572 color: var(--tuiter-muted); 573} 574 575/* Post form */ 576.post-form { 577 margin-bottom: 20px; 578} 579 580.post-form textarea { 581 width: 100%; 582 height: 60px; 583 padding: 5px; 584 border: 1px solid var(--tuiter-border-muted); 585 font-family: inherit; 586 font-size: 11px; 587 resize: vertical; 588} 589 590.post-form button { 591 background: var(--tuiter-join-bg); 592 border: 1px solid var(--tuiter-link); 593 padding: 4px 12px; 594 font-size: 11px; 595 cursor: pointer; 596 margin-top: 5px; 597} 598 599.post-form button:hover { 600 background: var(--tuiter-join-hover); 601} 602 603/* Timeline Post Box - 2006 Twitter Style */ 604.post-box { 605 background: rgba(var(--tuiter-white-rgb),0.90); 606 border: 1px solid var(--tuiter-border); 607 margin-bottom: 15px; 608 padding: 10px; 609 border-radius: 5px; 610} 611 612.post-box-header { 613 display: flex; 614 justify-content: space-between; 615 align-items: center; 616 margin-bottom: 6px; 617} 618 619.post-box-header h3 { 620 color: var(--tuiter-text); 621 font-size: 14px; 622 font-weight: bold; 623 margin: 0; 624} 625 626.char-count { 627 font-size: 11px; 628 color: var(--tuiter-muted); 629} 630 631.post-box textarea { 632 width: 100%; 633 min-height: 60px; 634 padding: 6px; 635 font-size: 13px; 636 border: 1px solid var(--tuiter-border-muted); 637 border-radius: 4px; 638 resize: vertical; 639 background: var(--tuiter-white); 640} 641 642.post-box textarea:focus { 643 border-color: var(--tuiter-accent); 644 outline: none; 645} 646 647.post-box-actions { 648 margin-top: 6px; 649 text-align: right; 650} 651 652.update-btn { 653 background: var(--tuiter-input-bg); 654 border: 1px solid var(--tuiter-border-muted); 655 padding: 6px 10px; 656 font-size: 12px; 657 cursor: pointer; 658} 659 660/* Generic error text */ 661.error-text { 662 color: var(--tuiter-error); 663} 664.no-posts { 665 padding: 12px 0; 666 color: var(--tuiter-muted); 667} 668 669/* Profile header */ 670.profile-header { 671 display: flex; 672 gap: 16px; 673 align-items: flex-start; 674 margin-bottom: 16px; 675} 676.profile-avatar { 677 flex: 0 0 96px; 678} 679.profile-avatar img { 680 width: 96px; 681 height: 96px; 682 border: 1px solid var(--tuiter-border-muted); 683 border-radius: 2px; 684 display: block; 685} 686.profile-avatar-placeholder { 687 width: 96px; 688 height: 96px; 689 background: var(--tuiter-avatar-bg); 690 display: flex; 691 align-items: center; 692 justify-content: center; 693 border: 1px solid var(--tuiter-border-muted); 694 border-radius: 2px; 695 font-size: 36px; 696} 697.profile-main { 698 flex: 1; 699} 700.profile-main h1 { 701 font-size: 28px; 702 margin-bottom: 6px; 703} 704.handle { 705 font-size: 14px; 706 color: var(--tuiter-muted); 707 margin-bottom: 8px; 708} 709.handle { 710 font-size: 2em; 711 font-weight: bold; 712 color: var(--tuiter-text); 713 background: rgba(var(--tuiter-white-rgb),0.85); 714 padding: 0.2em 0.5em; 715 border-radius: 8px; 716 box-shadow: 0 1px 4px rgba(var(--tuiter-media-black-rgb),0.12); 717 display: inline-block; 718} 719 720.bio pre { 721 font-family: inherit; 722 font-size: 13px; 723 line-height: 1.4; 724 white-space: pre-wrap; 725 margin: 0 0 10px 0; 726} 727.stats .stat { 728 margin-right: 12px; 729 font-size: 13px; 730 color: var(--tuiter-text); 731} 732 733/* Replies */ 734.reply-post, .reply-avatar, .reply-content { 735 display: flex; 736 gap: 8px; 737} 738.reply-post { 739 padding: 8px 0; 740 border-top: 1px solid rgba(var(--tuiter-media-black-rgb),0.04); 741} 742.reply-avatar img { 743 width: 24px; 744 height: 24px; 745} 746.reply-author { 747 font-weight: bold; 748 color: var(--tuiter-link); 749 text-decoration: none; 750} 751.reply-text { 752 margin-left: 6px; 753} 754 755/* View toggle */ 756.view-toggle { 757 margin: 8px 0; 758} 759.toggle-btn { 760 background: var(--tuiter-surface-subtle); 761 border: 1px solid var(--tuiter-border); 762 padding: 4px 8px; 763 margin-left: 6px; 764 cursor: pointer; 765 border-radius: 4px; 766 font-size: 12px; 767} 768.toggle-btn.active { 769 background: var(--tuiter-toggle-active); 770 border-color: var(--tuiter-highlight); 771} 772 773/* Flat-view makes replies render as a flat chronological list */ 774.child-replies.flat-view .reply-post { 775 margin-left: 0; 776 border-left: none; 777 background: transparent; 778} 779 780/* reduce indentation for nested default */ 781.child-replies .reply-post { 782 margin-left: 12px; 783} 784 785/* control flat/nested visibility */ 786.child-replies .flat-list { display: none; } 787.child-replies.flat-view .threaded-replies { display: none; } 788.child-replies.flat-view .flat-list { display: block; } 789/* ensure flat-list items look like normal replies */ 790.flat-list .reply-post { border-top: 1px solid var(--tuiter-divider); padding: 8px 0; display: flex; gap: 8px; } 791 792/* Small helper classes */ 793.note { 794 font-size: 9px; 795 color: var(--tuiter-muted); 796 margin-top: 8px; 797} 798 799/* Footer spacing */ 800footer { 801 margin-top: 12px; 802} 803 804/* Conversation chain (parent/ancestor posts) - IRC/Google Wave style */ 805.conversation-chain { 806 display: flex; 807 flex-direction: column; 808 gap: 6px; 809 margin: 10px 0 14px 0; 810 position: relative; 811 padding-left: 44px; /* space for avatar + connector */ 812} 813 814/* vertical connector line running alongside the chain */ 815.conversation-chain::before { 816 content: ""; 817 position: absolute; 818 left: 28px; 819 top: 8px; 820 bottom: 8px; 821 width: 2px; 822 background: var(--tuiter-border-subtle); 823 border-radius: 2px; 824} 825 826.chain-item { 827 display: flex; 828 gap: 8px; 829 align-items: flex-start; 830 padding: 6px 8px; 831 border-radius: 6px; 832 box-shadow: 0 1px 0 rgba(var(--tuiter-media-black-rgb),0.02) inset; 833} 834 835/* alternating subtle backgrounds to mimic chat bubbles */ 836.conversation-chain .chain-item:nth-child(odd) { 837 background: var(--tuiter-surface-warm); /* warm */ 838} 839.conversation-chain .chain-item:nth-child(even) { 840 background: var(--tuiter-surface-cool); /* cool */ 841} 842 843.chain-avatar { 844 position: absolute; 845 left: 0; 846 width: 40px; 847 display: flex; 848 align-items: center; 849 justify-content: center; 850} 851.chain-avatar img { 852 width: 32px; 853 height: 32px; 854 border-radius: 50%; 855 object-fit: cover; 856 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.06); 857} 858 859.chain-content { 860 margin-left: 4px; 861} 862.chain-author { 863 font-weight: 700; 864 color: var(--tuiter-handle-blue); 865 text-decoration: none; 866 font-size: 12px; 867} 868.chain-author:hover { text-decoration: underline; } 869.chain-text { 870 margin-top: 3px; 871 font-size: 12px; 872 line-height: 1.3; 873 color: var(--tuiter-text); 874} 875.chain-meta { 876 margin-top: 4px; 877 font-size: 11px; 878 color: var(--tuiter-muted); 879} 880 881/* compact chain layout on small viewports */ 882@media (max-width: 800px) { 883 .conversation-chain { 884 padding-left: 44px; 885 } 886 .conversation-chain::before { left: 28px; } 887 .chain-avatar { left: 0; } 888} 889 890/* Highlight the viewed post */ 891.highlighted-post { 892 border: 2px solid var(--tuiter-highlight); 893 background: linear-gradient(180deg, rgba(var(--tuiter-white-rgb),1) 0%, rgba(var(--tuiter-white-rgb),1) 100%); 894 padding: 8px; 895 border-radius: 8px; 896} 897 898.child-replies { 899 margin-top: 10px; 900} 901 902/* Remove connector line when conversation chain is rendered inside replies (avoids dark vertical line at left of Replies header) */ 903.child-replies .conversation-chain::before { 904 display: none; 905} 906 907.child-replies h4 { 908 font-size: 13px; 909 margin-bottom: 6px; 910} 911 912.reply-post { 913 padding: 8px 0; 914 border-top: 1px solid var(--tuiter-divider); 915 display: flex; 916 gap: 8px; 917} 918 919.reply-avatar img { width: 28px; height: 28px; border-radius: 50%; } 920 921.reply-content { flex: 1; } 922 923/* Forum-style nested threaded replies (2000s forum feel + 2006 Twitter identity) */ 924.threaded-replies { 925 margin-left: 6px; 926 padding-left: 0; 927 list-style: none; 928 font-size: 13px; /* slightly larger for readability like forum posts */ 929} 930 931.thread-node { 932 display: flex; 933 gap: 10px; 934 align-items: flex-start; 935 margin: 8px 0; /* space between boxed replies like forum posts */ 936 position: relative; 937} 938 939/* avatar: forum-like small square with border */ 940.thread-avatar img { 941 width: 36px; 942 height: 36px; 943 border-radius: 3px; 944 object-fit: cover; 945 border: 1px solid var(--tuiter-border-muted); 946 background: var(--tuiter-surface-subtle); 947} 948.thread-avatar a { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; } 949 950/* main content box for each reply - distinct boxed look from old forums */ 951.thread-content { 952 flex: 1; 953 background: linear-gradient(180deg, var(--tuiter-white), var(--tuiter-surface-subtle)); 954 border: 1px solid var(--tuiter-thread-border); 955 border-radius: 6px; 956 padding: 8px 10px; 957 box-shadow: 0 1px 0 rgba(var(--tuiter-media-black-rgb),0.03); 958} 959 960/* author and meta remain compact and recognizably 2006 */ 961.thread-content .reply-author { 962 font-weight: 700; 963 color: var(--tuiter-handle-blue); 964 font-size: 12px; 965 text-decoration: none; 966} 967.thread-content .reply-author:hover { text-decoration: underline; } 968 969.thread-node .reply-text { 970 margin-top: 6px; 971 font-size: 13px; 972 line-height: 1.35; 973 color: var(--tuiter-text); 974} 975.thread-node .reply-meta { 976 margin-top: 6px; 977 font-size: 11px; 978 color: var(--tuiter-muted); 979} 980 981/* children are indented to the right and connected by a vertical rule (forum-style thread connector) */ 982.thread-children { 983 margin-top: 10px; 984 margin-left: 52px; /* indent children under parent (space for avatar + gutter) */ 985 position: relative; 986} 987.thread-children::before { 988 content: ""; 989 position: absolute; 990 left: -42px; /* place connector between avatar and parent box */ 991 top: 6px; 992 bottom: 6px; 993 width: 2px; 994 background: linear-gradient(180deg, rgba(var(--tuiter-media-black-rgb),0.06), rgba(var(--tuiter-media-black-rgb),0.00)); 995 border-radius: 2px; 996} 997 998/* subtle alternating backgrounds for depth (gives forum nesting feel) */ 999.threaded-replies > .thread-node .thread-content { background: linear-gradient(180deg,var(--tuiter-white),var(--tuiter-surface-subtle)); } 1000.threaded-replies > .thread-node > .thread-children > .thread-node .thread-content { background: linear-gradient(180deg,var(--tuiter-surface-warm),var(--tuiter-white)); } 1001.threaded-replies > .thread-node > .thread-children > .thread-node > .thread-children > .thread-node .thread-content { background: linear-gradient(180deg,var(--tuiter-surface-cool),var(--tuiter-white)); } 1002 1003/* connector dot on parent to indicate connection point (keeps previous subtle dot concept) */ 1004.thread-node::before { 1005 content: ""; 1006 width: 8px; 1007 height: 8px; 1008 border-radius: 2px; 1009 background: var(--tuiter-border-subtle); 1010 position: absolute; 1011 left: 28px; /* align near avatar */ 1012 top: 18px; 1013 box-shadow: 0 1px 0 rgba(var(--tuiter-media-black-rgb),0.02) inset; 1014} 1015 1016/* keep viewed/highlighted post styling but match new padding */ 1017.thread-content.highlighted-post { 1018 border: 2px solid var(--tuiter-highlight); 1019 background: linear-gradient(180deg, rgba(var(--tuiter-white-rgb),1) 0%, rgba(var(--tuiter-white-rgb),1) 100%); 1020 padding: 10px; 1021 border-radius: 6px; 1022} 1023 1024/* responsive tweaks - reduce avatar and indentation on small screens */ 1025@media (max-width: 800px) { 1026 .thread-avatar img { width: 28px; height: 28px; } 1027 .thread-children { margin-left: 40px; } 1028 .thread-node::before { left: 22px; top: 14px; } 1029} 1030 1031/* ensure legacy flat-view rules still hide threaded markup when requested */ 1032.child-replies.flat-view .threaded-replies { display: none; } 1033/* Media styles for posts (images, video thumbnails, external link cards) */ 1034.post-media { margin-top: 8px; display: block; } 1035.media-images { display: flex; gap: 8px; flex-wrap: wrap; } 1036.post-image { max-width: 220px; max-height: 160px; border: 1px solid var(--tuiter-border-subtle); border-radius: 6px; object-fit: cover; } 1037.media-video { margin-top: 6px; } 1038.post-video-thumb { max-width: 320px; max-height: 200px; border: 1px solid var(--tuiter-border-subtle); border-radius: 6px; object-fit: cover; } 1039.media-external { margin-top: 6px; } 1040.external-link-card { display: flex; gap: 8px; align-items: center; text-decoration: none; border: 1px solid var(--tuiter-border-subtle); padding: 6px; border-radius: 6px; background: var(--tuiter-white); } 1041.external-thumb { width: 80px; height: 60px; object-fit: cover; border-radius: 4px; } 1042.external-meta { color: var(--tuiter-text); font-size: 12px; } 1043.external-desc { color: var(--tuiter-muted); font-size: 11px; margin-top: 4px; } 1044 1045/* Lightbox for viewing full-size images */ 1046#lightbox-overlay { 1047 position: fixed; 1048 inset: 0; 1049 background: rgba(var(--tuiter-media-black-rgb),0.85); 1050 display: none; 1051 align-items: center; 1052 justify-content: center; 1053 z-index: 9999; 1054} 1055#lightbox-overlay img { 1056 max-width: 90%; 1057 max-height: 90%; 1058 border-radius: 6px; 1059 box-shadow: 0 8px 30px rgba(var(--tuiter-media-black-rgb),0.6); 1060} 1061#lightbox-overlay .close-hint { 1062 position: absolute; 1063 top: 18px; 1064 right: 24px; 1065 color: var(--tuiter-white); 1066 font-size: 13px; 1067 opacity: 0.9; 1068} 1069#lightbox-overlay.visible { display: flex; } 1070 1071/* Chat-style reply-thread bubbles (2000s-inspired) */ 1072.chat { display: flex; flex-direction: column; gap: 8px; } 1073.chat-node { display: flex; width: 100%; } 1074/* allow wrapping so media can be placed on its own line under the bubble */ 1075.chat-node, .reply-thread.chat .chat-node { flex-wrap: wrap; } 1076.chat-node.left { justify-content: flex-start; } 1077.chat-node.right { justify-content: flex-end; } 1078.chat-bubble { 1079 max-width: 70%; 1080 padding: 8px 10px; 1081 border-radius: 14px; 1082 background: linear-gradient(180deg,var(--tuiter-card),var(--tuiter-surface-cool)); 1083 border: 1px solid var(--tuiter-border-subtle); 1084 box-shadow: 0 2px 0 rgba(var(--tuiter-media-black-rgb),0.06); 1085 font-size: 12px; 1086 color: var(--tuiter-text); 1087 position: relative; 1088} 1089/* Pale blue right bubble to match 2006 Twitter aesthetic */ 1090.chat-node.right .chat-bubble { 1091 background: linear-gradient(180deg,var(--tuiter-cyan-pale),var(--tuiter-cyan-pale-2)); 1092 color: var(--tuiter-dark-teal); 1093 border-color: var(--tuiter-cyan-pale); 1094} 1095 1096.chat-author { font-weight: 700; color: var(--tuiter-handle-blue); font-size: 12px; margin-bottom: 4px; } 1097/* keep author link color consistent */ 1098.chat-node.right .chat-author { color: var(--tuiter-handle-blue); } 1099.chat-text { white-space: pre-wrap; line-height: 1.35; } 1100 1101/* small triangular tail effect (CSS pseudo-element) */ 1102.chat-node.left .chat-bubble::after { 1103 content: ""; 1104 position: absolute; 1105 left: -8px; 1106 top: 10px; 1107 width: 12px; 1108 height: 12px; 1109 background: linear-gradient(180deg,var(--tuiter-card),var(--tuiter-surface-cool)); 1110 border-right: 1px solid var(--tuiter-border-subtle); 1111 transform: rotate(45deg); 1112 border-bottom: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); 1113} 1114.chat-node.right .chat-bubble::after { 1115 content: ""; 1116 position: absolute; 1117 right: -8px; 1118 top: 10px; 1119 width: 12px; 1120 height: 12px; 1121 background: linear-gradient(180deg,var(--tuiter-cyan-pale),var(--tuiter-cyan-pale-2)); 1122 border-left: 1px solid var(--tuiter-cyan-pale); 1123 transform: rotate(45deg); 1124 border-top: 1px solid rgba(var(--tuiter-white-rgb),0.6); 1125} 1126 1127.chat-author { font-weight: 700; color: var(--tuiter-handle-blue); font-size: 12px; margin-bottom: 4px; } 1128/* keep author link color consistent */ 1129.chat-node.right .chat-author { color: var(--tuiter-handle-blue); } 1130.chat-text { white-space: pre-wrap; line-height: 1.35; } 1131 1132/* current post highlight tweaks */ 1133.current-post .chat-bubble { box-shadow: 0 3px 0 rgba(var(--tuiter-media-black-rgb),0.08); border-color: var(--tuiter-highlight); } 1134 1135/* ensure bubbles are responsive */ 1136@media (max-width: 800px) { 1137 .chat-bubble { max-width: 90%; } 1138} 1139 1140/* Avatar next to chat bubbles (tight chat spacing like classic chat UIs) */ 1141.chat-node.compact { align-items: center; gap: 6px; } 1142.chat-avatar { width: 36px; display:flex; align-items:center; justify-content:center; margin: 0; } 1143.chat-avatar img { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; border: 1px solid rgba(var(--tuiter-media-black-rgb),0.06); } 1144.avatar-placeholder { width: 28px; height: 28px; background: var(--tuiter-avatar-bg); border-radius:50%; border:1px solid var(--tuiter-border-muted); } 1145/* tighten spacing between avatar and bubble */ 1146.chat-node.left .chat-avatar { margin-right: 6px; } 1147.chat-node.right .chat-avatar { margin-left: 6px; } 1148.chat-node.left .chat-bubble { margin-left: 4px; } 1149.chat-node.right .chat-bubble { margin-right: 4px; } 1150/* adjust tail vertical position for tighter layout */ 1151.chat-node.left .chat-bubble::after, .chat-node.right .chat-bubble::after { top: 12px; width: 10px; height: 10px; } 1152/* ensure compact bubbles remain visually balanced */ 1153.chat-bubble.small { padding: 6px 8px; } 1154 1155/* Flattened chat style tweaks */ 1156.chat.flattened .chat-node.compact { gap: 6px; align-items: flex-start; } 1157.chat-bubble.small { padding: 6px 8px; border-radius: 8px; font-size: 12px; max-width: 60%; } 1158.chat-bubble.small .chat-author { font-size: 12px; margin-bottom: 3px; } 1159.chat-bubble.small .chat-text { font-size: 12px; line-height: 1.3; } 1160.chat-meta { margin-top: 6px; font-size: 11px; color: var(--tuiter-muted); } 1161.chat-meta a { color: var(--tuiter-link); text-decoration: none; } 1162.chat-meta a:hover { text-decoration: underline; } 1163 1164/* make bubbles occupy less vertical space and appear flatter */ 1165.chat-bubble.small { box-shadow: none; border: 1px solid rgba(var(--tuiter-media-black-rgb),0.06); } 1166.chat-node.left .chat-bubble.small::after, .chat-node.right .chat-bubble.small::after { width: 10px; height: 10px; top: 12px; } 1167 1168/* slightly tighter avatar size for compact view */ 1169.chat-avatar img { width: 28px; height: 28px; } 1170.avatar-placeholder { width: 28px; height: 28px; } 1171 1172/* ensure compact nodes don't take too much horizontal space */ 1173.chat-node.compact .chat-bubble.small { max-width: 55%; } 1174@media (max-width: 800px) { 1175 .chat-node.compact .chat-bubble.small { max-width: 78%; } 1176} 1177 1178/* Right-side bubble text alignment for author and timestamp only */ 1179.chat-node.right .chat-bubble { text-align: left; } 1180.chat-node.right .chat-author { display: block; text-align: right; } 1181.chat-node.right .chat-meta { text-align: right; } 1182 1183/* IRC-like conversation container for reply threads (2006 aesthetic) */ 1184.reply-thread.chat.flattened { 1185 background: linear-gradient(160deg,var(--tuiter-white),var(--tuiter-cyan-pale)); 1186 border: 1px solid var(--tuiter-cyan-pale); /* soft cyan border */ 1187 border-radius: 6px; /* small, square-rounded corners */ 1188 padding: 10px; /* snug padding */ 1189 box-shadow: inset 0 1px 0 rgba(var(--tuiter-white-rgb),0.6), 0 1px 0 rgba(var(--tuiter-media-black-rgb),0.03); 1190 margin: 8px 0; 1191 width: 100%; 1192} 1193.reply-thread.chat.flattened .chat-node { margin-bottom: 6px; } 1194.reply-thread.chat.flattened .chat-bubble { background: transparent; border: none; box-shadow: none; } 1195.reply-thread.chat.flattened .chat-bubble.small { background: linear-gradient(180deg,var(--tuiter-white),var(--tuiter-surface-cool)); border: 1px solid rgba(var(--tuiter-media-black-rgb),0.06); } 1196/* reduce overall spacing to feel IRC-like */ 1197.reply-thread.chat.flattened .chat-avatar { margin-right: 8px; } 1198.reply-thread.chat.flattened .chat-node.right .chat-avatar { margin-left: 8px; margin-right: 0; } 1199 1200/* Tight avatar->bubble attachment: remove spacing so bubble appears to come out of the avatar */ 1201.chat-node.compact { gap: 0 !important; align-items: center; } 1202.chat-avatar { margin: 0 !important; position: relative; z-index: 3; } 1203.chat-avatar img { position: relative; z-index: 4; } 1204 1205/* remove any horizontal margins so bubble and avatar touch */ 1206.chat-node.left .chat-avatar { margin-right: 0 !important; } 1207.chat-node.right .chat-avatar { margin-left: 0 !important; } 1208 1209/* overlap the bubble slightly under the avatar so it looks like it emerges from it */ 1210.chat-node.left .chat-bubble { margin-left: -8px !important; z-index: 1; } 1211.chat-node.right .chat-bubble { margin-right: -8px !important; z-index: 1; } 1212 1213/* flattened thread variants */ 1214.reply-thread.chat.flattened .chat-avatar { margin-right: 0 !important; } 1215.reply-thread.chat.flattened .chat-node.right .chat-avatar { margin-left: 0 !important; } 1216 1217/* bring the avatar visually in front and nudge the triangular tail to meet the avatar edge */ 1218.chat-node.left .chat-bubble::after { left: -4px !important; top: 12px !important; width: 10px !important; height: 10px !important; } 1219.chat-node.right .chat-bubble::after { right: -4px !important; top: 12px !important; width: 10px !important; height: 10px !important; } 1220 1221/* ensure small/compact bubbles also follow the same tight layout */ 1222.chat-bubble.small { z-index: 1; } 1223.chat-node.compact .chat-bubble.small { margin-left: -6px !important; margin-right: -6px !important; } 1224 1225/* make sure the avatar border visually connects with the bubble by slightly reducing avatar border contrast */ 1226.chat-avatar img { border: 1px solid rgba(var(--tuiter-media-black-rgb),0.04); } 1227 1228/* Chat-media: ensure media appears below the bubble and aligns to the same side (left/right) */ 1229.chat-media { 1230 display: block; 1231 /* force the media element to occupy the full row inside the .chat-node flex container */ 1232 flex-basis: 100%; 1233 order: 99; /* place after avatar + bubble */ 1234 margin-top: 6px; 1235 width: 100%; 1236 clear: both; /* ensure it sits below any floated/inline elements */ 1237} 1238 1239/* Ensure the shared post-media behaves as a block-level card, but can be centered/right-aligned by its container */ 1240.post-media { display: inline-block; } 1241 1242/* Offset the media so it lines up under the bubble, leaving space for the avatar */ 1243.chat-node.left .chat-media { 1244 text-align: left; 1245 padding-left: 44px; /* space for avatar + small gutter */ 1246 padding-right: 0; 1247} 1248 1249.chat-node.right .chat-media { 1250 text-align: right; 1251 padding-right: 44px; /* space for avatar + small gutter */ 1252 padding-left: 0; 1253} 1254 1255/* Keep individual media items inline-block so they respect text-align on the container */ 1256.chat-media .post-media .media-images, 1257.chat-media .post-media .media-video, 1258.chat-media .post-media .media-external { 1259 display: inline-block; 1260 vertical-align: top; 1261} 1262 1263/* Responsive tweak: reduce offset on small screens */ 1264@media (max-width: 800px) { 1265 .chat-node.left .chat-media, 1266 .chat-node.right .chat-media { 1267 padding-left: 24px; 1268 padding-right: 24px; 1269 } 1270 .chat-media .post-media { max-width: 100%; } 1271} 1272 1273/* Added rules to replace inline styles moved from templates */ 1274.post-avatar-img { 1275 width: 48px; 1276 height: 48px; 1277 border-radius: 50%; 1278 object-fit: cover; 1279} 1280 1281.post-author-img { 1282 width: 48px; 1283 height: 48px; 1284 border-radius: 2px; 1285 object-fit: cover; 1286} 1287 1288.post-content-inline { 1289 display: inline-block; 1290 vertical-align: top; 1291 width: calc(100% - 56px); 1292} 1293 1294.post-box-textarea { 1295 resize: none; 1296 background: var(--tuiter-input-bg); 1297 border-radius: 6px; 1298 border: 1px solid var(--tuiter-border-muted); 1299 color: var(--tuiter-text); 1300 width: 100%; 1301 min-height: 60px; 1302 padding: 6px; 1303} 1304 1305.update-btn-large { 1306 background: var(--tuiter-brand); 1307 color: var(--tuiter-white); 1308 border: none; 1309 border-radius: 6px; 1310 font-weight: bold; 1311 padding: 8px 22px; 1312 font-size: 1.1em; 1313 box-shadow: 0 2px 6px rgba(var(--tuiter-media-black-rgb),0.08); 1314 cursor: pointer; 1315 transition: background 0.2s; 1316} 1317 1318.chain-avatar-img { 1319 width: 32px; 1320 height: 32px; 1321 border-radius: 50%; 1322 object-fit: cover; 1323} 1324 1325.profile-avatar-img { 1326 width: 96px; 1327 height: 96px; 1328 border: 1px solid var(--tuiter-border-muted); 1329 border-radius: 2px; 1330 display: block; 1331} 1332 1333.video-embedded { 1334 max-width: 100%; 1335 height: auto; 1336 background: var(--tuiter-media-black); 1337} 1338 1339#lightbox-video { 1340 max-width: 100%; 1341 max-height: 80vh; 1342 display: none; 1343} 1344 1345#lightbox-img { max-width: 100%; max-height: 80vh; display: block; } 1346 1347/* make lightbox overlay hidden by default and visible when .visible is present */ 1348#lightbox-overlay { display: none; position: fixed; inset: 0; background: rgba(var(--tuiter-media-black-rgb),0.8); align-items: center; justify-content: center; z-index: 9999; } 1349#lightbox-overlay.visible { display: flex; } 1350/* Enhanced styling for standard (non-reply) posts inserted to match 2006 retro layout with better spacing */ 1351.post-avatar { 1352 flex: 0 0 56px; /* reserve space for avatar */ 1353 display: flex; 1354 align-items: flex-start; 1355 justify-content: center; 1356 margin-top: 2px; 1357} 1358 1359.post-avatar a { display:inline-block; } 1360.post-avatar img { width:48px; height:48px; border-radius:4px; border:1px solid var(--tuiter-border-muted); object-fit:cover; } 1361 1362.post-content.post-card { 1363 background: linear-gradient(180deg, rgba(var(--tuiter-white-rgb),0.98), var(--tuiter-surface-subtle)); 1364 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.04); 1365 border-radius: 6px; 1366 padding: 8px 10px; 1367 width: 100%; 1368} 1369 1370.post-row { 1371 display: flex; 1372 flex-direction: column; 1373 gap: 6px; 1374} 1375 1376.post-head { 1377 display: flex; 1378 gap: 8px; 1379 align-items: center; 1380} 1381 1382.post-head .post-author { 1383 font-weight: 700; 1384 color: var(--tuiter-handle-blue); 1385 font-size: 13px; 1386 text-decoration: none; 1387} 1388 1389.post-handle { 1390 font-size: 12px; 1391 color: var(--tuiter-muted); 1392 margin-left: 6px; 1393} 1394 1395.post-meta-inline { 1396 margin-left: auto; 1397 font-size: 11px; 1398 color: var(--tuiter-muted); 1399 white-space: nowrap; 1400} 1401 1402.post-body { 1403 margin-top: 4px; 1404 display: block; 1405} 1406 1407.post-text { 1408 font-size: 12px; 1409 line-height: 1.35; 1410 color: var(--tuiter-text); 1411} 1412 1413.post-actions { 1414 margin-top: 8px; 1415 font-size: 11px; 1416} 1417 1418/* Make post-media sit comfortably under the text and align with content area */ 1419.post-content .post-media { margin-top: 8px; } 1420 1421/* Slightly increase spacing between posts for readability */ 1422.post { padding: 14px 0; } 1423 1424/* Retro subtle hover highlight for posts (non-reply) */ 1425.post:hover .post-content.post-card { box-shadow: 0 4px 14px rgba(var(--tuiter-media-black-rgb),0.06); transform: translateY(-1px); } 1426 1427/* Small screens: reduce avatar and padding to keep content readable */ 1428@media (max-width: 640px) { 1429 .post-avatar { flex: 0 0 44px; } 1430 .post-avatar img { width:40px; height:40px; } 1431 .post-content.post-card { padding: 8px; } 1432 .post-meta-inline { font-size: 10px; } 1433} 1434 1435/* Reply floating button (circular) shown at bottom-right of post content cards and chat bubbles */ 1436.reply-button { 1437 position: absolute; 1438 right: 10px; 1439 bottom: 10px; 1440 display: inline-flex; 1441 align-items: center; 1442 justify-content: center; 1443 width: 28px; /* reduced from 32px */ 1444 height: 28px; /* reduced from 32px */ 1445 border-radius: 50%; 1446 background: rgba(var(--tuiter-white-rgb),0.72); /* more translucent */ 1447 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); /* subtler border */ 1448 box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); /* very light shadow */ 1449 z-index: 30; 1450 padding: 0; 1451 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s, opacity 0.12s; 1452 opacity: 0.96; 1453} 1454 1455.reply-button:hover { 1456 background: rgba(var(--tuiter-accent),0.98); 1457 color: rgba(var(--tuiter-white-rgb),0.98); 1458 box-shadow: 0 2px 6px rgba(var(--tuiter-media-black-rgb),0.06); 1459 transform: translateY(-1px); 1460 opacity: 1; 1461} 1462 1463.reply-button .reply-btn { 1464 width: 100%; 1465 height: 100%; 1466 border: none; 1467 background: transparent; 1468 font-size: 12px; /* slightly smaller icon/text */ 1469 line-height: 1; 1470 cursor: pointer; 1471 color: var(--tuiter-muted); 1472 border-radius: 50%; 1473 display: inline-flex; 1474 align-items: center; 1475 justify-content: center; 1476 position: relative; /* allow nudging the arrow down */ 1477 top: 2px; /* nudge arrow a bit downward */ 1478} 1479.reply-button .reply-btn:hover, .reply-button.active .reply-btn { 1480 background-color: var(--tuiter-handle-blue); 1481 color: var(--tuiter-white); 1482} 1483 1484/* notification-style badge for count - monochrome and low-contrast by default */ 1485.reply-button .reply-count { 1486 position: absolute; 1487 top: -2px; /* moved slightly down from -5px */ 1488 right: -5px; 1489 min-width: 14px; /* reduced from 18px */ 1490 height: 14px; /* reduced from 18px */ 1491 padding: 0 4px; 1492 display: inline-flex; 1493 align-items: center; 1494 justify-content: center; 1495 font-size: 10px; /* slightly smaller */ 1496 font-weight: 700; 1497 color: var(--tuiter-white); 1498 background: rgba(var(--tuiter-media-black-rgb),0.28); /* monochrome, translucent */ 1499 border-radius: 999px; 1500 border: 1px solid rgba(var(--tuiter-white-rgb),0.85); 1501 box-shadow: none; /* remove ornamental shadow */ 1502 transition: background 0.12s ease, transform 0.12s ease, opacity 0.12s; 1503 opacity: 0.92; 1504 pointer-events: none; 1505} 1506.reply-button:hover .reply-count { 1507 background: rgba(var(--tuiter-media-black-rgb),0.5); /* darker on hover to show affordance */ 1508 opacity: 1; 1509} 1510 1511/* Use accent color for the reply-count badge when the button is hovered (main, chat and bubble variants) */ 1512.reply-button:hover .reply-count, 1513.chat-reply-button:hover .reply-count, 1514.chat-bubble .reply-button:hover .reply-count { 1515 background: var(--tuiter-accent); 1516 color: var(--tuiter-white); 1517 border-color: rgba(var(--tuiter-white-rgb),0.9); 1518 opacity: 1; 1519} 1520 1521.chat-reply-button { width: 26px; height: 26px; right: 6px; bottom: 6px; background: rgba(var(--tuiter-white-rgb),0.74); box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); } 1522.chat-reply-button .reply-btn { font-size: 11px; position: relative; top: 1px; color: var(--tuiter-muted); } 1523.chat-reply-button .reply-count { top: -3px; right: -6px; min-width: 12px; height: 12px; font-size: 9px; background: rgba(var(--tuiter-media-black-rgb),0.28); color: var(--tuiter-white); border: 1px solid rgba(var(--tuiter-white-rgb),0.85); box-shadow: none; } 1524 1525/* small screen adjustments */ 1526@media (max-width: 640px) { 1527 .reply-button { width: 26px; height: 26px; right: 8px; bottom: 8px; } 1528 .reply-button .reply-count { top: -3px; right: -5px; min-width: 12px; height: 12px; font-size: 9px; } 1529} 1530 1531/* ensure reply button doesn't obstruct essential text - slightly transparent when overlapping text */ 1532.post-content.post-card .reply-button { background: rgba(var(--tuiter-white-rgb),0.68); } 1533 1534/* Allow absolute-positioned reply button to anchor to chat bubbles */ 1535.chat-bubble { position: relative; } 1536 1537/* Reply button when placed inside a chat bubble (smaller, tucked in) */ 1538.chat-bubble .reply-button { 1539 position: absolute; /* anchor to bubble */ 1540 bottom: 6px; 1541 width: 24px; /* reduced from 26/30 */ 1542 height: 24px; /* reduced */ 1543 min-width: 24px; 1544 border-radius: 50%; 1545 box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); 1546 background: rgba(var(--tuiter-white-rgb),0.74); 1547 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); 1548 padding: 0; 1549 z-index: 25; 1550 transition: background 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease; 1551} 1552.chat-bubble .reply-button:hover { background: rgba(var(--tuiter-white-rgb),0.96); box-shadow: 0 2px 5px rgba(var(--tuiter-media-black-rgb),0.05); transform: translateY(-1px); } 1553.chat-bubble .reply-button .reply-btn { font-size: 11px; position: relative; top: 3px; } 1554.chat-bubble .reply-button .reply-count { top: 1px; right: -2px; min-width: 11px; height: 11px; font-size: 9px; background: rgba(var(--tuiter-media-black-rgb),0.28); color: var(--tuiter-white); border: 1px solid rgba(var(--tuiter-white-rgb),0.85); box-shadow: none; opacity: 0.92; } 1555 1556/* left-side bubble: place button at bubble's lower-right (so arrow visually points toward avatar on left) */ 1557.chat-bubble .reply-button.side-left { right: -26px; left: auto; } 1558 1559/* right-side bubble: place button at bubble's lower-left (so arrow visually points toward avatar on right) */ 1560.chat-bubble .reply-button.side-right { left: -26px; right: auto; } 1561 1562/* Ensure badge stands out on top of bubble */ 1563.chat-bubble .reply-button .reply-count { border: 1px solid rgba(var(--tuiter-white-rgb),0.9); } 1564 1565/* Keep previous chat-reply-button class for other placements but prefer bubble-scoped rules for bubbles */ 1566.reply-button .reply-count, 1567.chat-reply-button .reply-count, 1568.chat-bubble .reply-button .reply-count { 1569 transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.12s ease, opacity 0.12s ease; 1570} 1571 1572/* Hide reply button by default and reveal on hover of the post/chat container */ 1573.reply-button { 1574 /* keep existing sizing/appearance but start hidden */ 1575 opacity: 0; 1576 transform: translateY(4px) scale(0.98); 1577 pointer-events: none; 1578 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s, opacity 0.18s ease; 1579} 1580 1581/* Reveal when user hovers the relevant container (post card, post wrapper or chat bubble) */ 1582.post:hover .reply-button, 1583.post-content.post-card:hover .reply-button, 1584.post-content.post-card:focus-within .reply-button, 1585.post:hover .post-content.post-card .reply-button, 1586.chat-node:hover .reply-button, 1587.chat-bubble:hover .reply-button, 1588.thread-node:hover .reply-button { 1589 opacity: 0.96; /* match previous visible state */ 1590 transform: translateY(0) scale(1); 1591 pointer-events: auto; 1592} 1593 1594/* On touch devices (no hover), keep button visible so it's usable */ 1595@media (hover: none) { 1596 .reply-button { 1597 opacity: 0.96; 1598 transform: none; 1599 pointer-events: auto; 1600 } 1601} 1602 1603 1604/* fav floating button (circular) shown at bottom-right of post content cards and chat bubbles */ 1605.fav-button { 1606 position: absolute; 1607 right: 40px; 1608 bottom: 10px; 1609 display: inline-flex; 1610 align-items: center; 1611 justify-content: center; 1612 width: 28px; /* reduced from 32px */ 1613 height: 28px; /* reduced from 32px */ 1614 border-radius: 50%; 1615 background: rgba(var(--tuiter-white-rgb),0.72); /* more translucent */ 1616 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); /* subtler border */ 1617 box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); /* very light shadow */ 1618 z-index: 30; 1619 padding: 0; 1620 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s, opacity 0.12s; 1621 opacity: 0.96; 1622} 1623 1624.fav-button:hover { 1625 background: rgba(var(--tuiter-highlight),0.98); 1626 color: rgba(var(--tuiter-white-rgb),0.98); 1627 box-shadow: 0 2px 6px rgba(var(--tuiter-media-black-rgb),0.06); 1628 transform: translateY(-1px); 1629 opacity: 1; 1630} 1631 1632.fav-button .fav-btn { 1633 width: 100%; 1634 height: 100%; 1635 border: none; 1636 background: transparent; 1637 font-size: 12px; /* slightly smaller icon/text */ 1638 line-height: 1; 1639 cursor: pointer; 1640 color: var(--tuiter-muted); 1641 border-radius: 50%; 1642 display: inline-flex; 1643 align-items: center; 1644 justify-content: center; 1645 position: relative; /* allow nudging the arrow down */ 1646 top: 2px; /* nudge arrow a bit downward */ 1647} 1648.fav-button .fav-btn:hover, .fav-button.active .fav-btn { 1649 background-color: var(--tuiter-highlight); 1650 color: var(--tuiter-white); 1651} 1652 1653/* notification-style badge for count - monochrome and low-contrast by default */ 1654.fav-button .fav-count { 1655 position: absolute; 1656 top: -2px; /* moved slightly down from -5px */ 1657 right: -5px; 1658 min-width: 14px; /* reduced from 18px */ 1659 height: 14px; /* reduced from 18px */ 1660 padding: 0 4px; 1661 display: inline-flex; 1662 align-items: center; 1663 justify-content: center; 1664 font-size: 10px; /* slightly smaller */ 1665 font-weight: 700; 1666 color: var(--tuiter-white); 1667 background: rgba(var(--tuiter-media-black-rgb),0.28); /* monochrome, translucent */ 1668 border-radius: 999px; 1669 border: 1px solid rgba(var(--tuiter-white-rgb),0.85); 1670 box-shadow: none; /* remove ornamental shadow */ 1671 transition: background 0.12s ease, transform 0.12s ease, opacity 0.12s; 1672 opacity: 0.92; 1673 pointer-events: none; 1674} 1675.fav-button:hover .fav-count { 1676 background: rgba(var(--tuiter-media-black-rgb),0.5); /* darker on hover to show affordance */ 1677 opacity: 1; 1678} 1679 1680/* Use accent color for the fav-count badge when the button is hovered (main, chat and bubble variants) */ 1681.fav-button:hover .fav-count, 1682.chat-fav-button:hover .fav-count, 1683.chat-bubble .fav-button:hover .fav-count { 1684 background: var(--tuiter-highlight); 1685 color: var(--tuiter-white); 1686 border-color: rgba(var(--tuiter-white-rgb),0.9); 1687 opacity: 1; 1688} 1689 1690.chat-fav-button { width: 26px; height: 26px; right: 6px; bottom: 6px; background: rgba(var(--tuiter-white-rgb),0.74); box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); } 1691.chat-fav-button .fav-btn { font-size: 11px; position: relative; top: 1px; color: var(--tuiter-muted); } 1692.chat-fav-button .fav-count { top: -3px; right: -6px; min-width: 12px; height: 12px; font-size: 9px; background: rgba(var(--tuiter-media-black-rgb),0.28); color: var(--tuiter-white); border: 1px solid rgba(var(--tuiter-white-rgb),0.85); box-shadow: none; } 1693 1694/* small screen adjustments */ 1695@media (max-width: 640px) { 1696 .fav-button { width: 26px; height: 26px; right: 8px; bottom: 8px; } 1697 .fav-button .fav-count { top: -3px; right: -5px; min-width: 12px; height: 12px; font-size: 9px; } 1698} 1699 1700/* ensure fav button doesn't obstruct essential text - slightly transparent when overlapping text */ 1701.post-content.post-card .fav-button { background: rgba(var(--tuiter-white-rgb),0.68); } 1702 1703/* Allow absolute-positioned fav button to anchor to chat bubbles */ 1704.chat-bubble { position: relative; } 1705 1706/* fav button when placed inside a chat bubble (smaller, tucked in) */ 1707.chat-bubble .fav-button { 1708 position: absolute; /* anchor to bubble */ 1709 bottom: 6px; 1710 width: 24px; /* reduced from 26/30 */ 1711 height: 24px; /* reduced */ 1712 min-width: 24px; 1713 border-radius: 50%; 1714 box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); 1715 background: rgba(var(--tuiter-white-rgb),0.74); 1716 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); 1717 padding: 0; 1718 z-index: 25; 1719 transition: background 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease; 1720} 1721.chat-bubble .fav-button:hover { background: rgba(var(--tuiter-white-rgb),0.96); box-shadow: 0 2px 5px rgba(var(--tuiter-media-black-rgb),0.05); transform: translateY(-1px); } 1722.chat-bubble .fav-button .fav-btn { font-size: 11px; position: relative; top: 3px; } 1723.chat-bubble .fav-button .fav-count { top: 1px; right: -2px; min-width: 11px; height: 11px; font-size: 9px; background: rgba(var(--tuiter-media-black-rgb),0.28); color: var(--tuiter-white); border: 1px solid rgba(var(--tuiter-white-rgb),0.85); box-shadow: none; opacity: 0.92; } 1724 1725/* left-side bubble: place button at bubble's lower-right (so arrow visually points toward avatar on left) */ 1726.chat-bubble .fav-button.side-left { right: -26px; left: auto; bottom: 32px; } 1727 1728/* right-side bubble: place button at bubble's lower-left (so arrow visually points toward avatar on right) */ 1729.chat-bubble .fav-button.side-right { left: -26px; right: auto; bottom: 32px; } 1730 1731/* Ensure badge stands out on top of bubble */ 1732.chat-bubble .fav-button .fav-count { border: 1px solid rgba(var(--tuiter-white-rgb),0.9); } 1733 1734/* Keep previous chat-fav-button class for other placements but prefer bubble-scoped rules for bubbles */ 1735.fav-button .fav-count, 1736.chat-fav-button .fav-count, 1737.chat-bubble .fav-button .fav-count { 1738 transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.12s ease, opacity 0.12s ease; 1739} 1740 1741 1742/* Hide fav button by default and reveal on hover of the post/chat container */ 1743.fav-button { 1744 /* keep existing sizing/appearance but start hidden */ 1745 opacity: 0; 1746 transform: translateY(4px) scale(0.98); 1747 pointer-events: none; 1748 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s, opacity 0.18s ease; 1749} 1750 1751/* Reveal when user hovers the relevant container (post card, post wrapper or chat bubble) */ 1752.post:hover .fav-button, 1753.post-content.post-card:hover .fav-button, 1754.post-content.post-card:focus-within .fav-button, 1755.post:hover .post-content.post-card .fav-button, 1756.chat-node:hover .fav-button, 1757.chat-bubble:hover .fav-button, 1758.thread-node:hover .fav-button { 1759 opacity: 0.96; /* match previous visible state */ 1760 transform: translateY(0) scale(1); 1761 pointer-events: auto; 1762} 1763 1764/* On touch devices (no hover), keep button visible so it's usable */ 1765@media (hover: none) { 1766 .fav-button { 1767 opacity: 0.96; 1768 transform: none; 1769 pointer-events: auto; 1770 } 1771} 1772 1773/* rt floating button (circular) shown at bottom-right of post content cards and chat bubbles */ 1774.rt-button { 1775 position: absolute; 1776 right: 70px; 1777 bottom: 10px; 1778 display: inline-flex; 1779 align-items: center; 1780 justify-content: center; 1781 width: 28px; /* reduced from 32px */ 1782 height: 28px; /* reduced from 32px */ 1783 border-radius: 50%; 1784 background: rgba(var(--tuiter-white-rgb),0.72); /* more translucent */ 1785 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); /* subtler border */ 1786 box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); /* very light shadow */ 1787 z-index: 30; 1788 padding: 0; 1789 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s, opacity 0.12s; 1790 opacity: 0.96; 1791} 1792 1793.rt-button:hover { 1794 background: rgba(var(--tuiter-sidebar-bg),0.98); 1795 color: rgba(var(--tuiter-white-rgb),0.98); 1796 box-shadow: 0 2px 6px rgba(var(--tuiter-media-black-rgb),0.06); 1797 transform: translateY(-1px); 1798 opacity: 1; 1799} 1800 1801.rt-button .rt-btn { 1802 width: 100%; 1803 height: 100%; 1804 border: none; 1805 background: transparent; 1806 font-size: 12px; /* slightly smaller icon/text */ 1807 line-height: 1; 1808 cursor: pointer; 1809 color: var(--tuiter-muted); 1810 border-radius: 50%; 1811 display: inline-flex; 1812 align-items: center; 1813 justify-content: center; 1814 position: relative; /* allow nudging the arrow down */ 1815 top: 2px; /* nudge arrow a bit downward */ 1816} 1817.rt-button .rt-btn:hover, .rt-button.active .rt-btn { 1818 background-color: var(--tuiter-sidebar-bg); 1819 color: var(--tuiter-white); 1820} 1821 1822/* notification-style badge for count - monochrome and low-contrast by default */ 1823.rt-button .rt-count { 1824 position: absolute; 1825 top: -2px; /* moved slightly down from -5px */ 1826 right: -5px; 1827 min-width: 14px; /* reduced from 18px */ 1828 height: 14px; /* reduced from 18px */ 1829 padding: 0 4px; 1830 display: inline-flex; 1831 align-items: center; 1832 justify-content: center; 1833 font-size: 10px; /* slightly smaller */ 1834 font-weight: 700; 1835 color: var(--tuiter-white); 1836 background: rgba(var(--tuiter-media-black-rgb),0.28); /* monochrome, translucent */ 1837 border-radius: 999px; 1838 border: 1px solid rgba(var(--tuiter-white-rgb),0.85); 1839 box-shadow: none; /* remove ornamental shadow */ 1840 transition: background 0.12s ease, transform 0.12s ease, opacity 0.12s; 1841 opacity: 0.92; 1842 pointer-events: none; 1843} 1844.rt-button:hover .rt-count { 1845 background: rgba(var(--tuiter-media-black-rgb),0.5); /* darker on hover to show affordance */ 1846 opacity: 1; 1847} 1848 1849/* Use accent color for the rt-count badge when the button is hovered (main, chat and bubble variants) */ 1850.rt-button:hover .rt-count, 1851.chat-rt-button:hover .rt-count, 1852.chat-bubble .rt-button:hover .rt-count { 1853 background: var(--tuiter-sidebar-bg); 1854 color: var(--tuiter-white); 1855 border-color: rgba(var(--tuiter-white-rgb),0.9); 1856 opacity: 1; 1857} 1858 1859.chat-rt-button { width: 26px; height: 26px; right: 6px; bottom: 6px; background: rgba(var(--tuiter-white-rgb),0.74); box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); } 1860.chat-rt-button .rt-btn { font-size: 11px; position: relative; top: 1px; color: var(--tuiter-muted); } 1861.chat-rt-button .rt-count { top: -3px; right: -6px; min-width: 12px; height: 12px; font-size: 9px; background: rgba(var(--tuiter-media-black-rgb),0.28); color: var(--tuiter-white); border: 1px solid rgba(var(--tuiter-white-rgb),0.85); box-shadow: none; } 1862 1863/* small screen adjustments */ 1864@media (max-width: 640px) { 1865 .rt-button { width: 26px; height: 26px; right: 8px; bottom: 8px; } 1866 .rt-button .rt-count { top: -3px; right: -5px; min-width: 12px; height: 12px; font-size: 9px; } 1867} 1868 1869/* ensure rt button doesn't obstruct essential text - slightly transparent when overlapping text */ 1870.post-content.post-card .rt-button { background: rgba(var(--tuiter-white-rgb),0.68); } 1871 1872/* Allow absolute-positioned rt button to anchor to chat bubbles */ 1873.chat-bubble { position: relative; } 1874 1875/* rt button when placed inside a chat bubble (smaller, tucked in) */ 1876.chat-bubble .rt-button { 1877 position: absolute; /* anchor to bubble */ 1878 bottom: 6px; 1879 width: 24px; /* reduced from 26/30 */ 1880 height: 24px; /* reduced */ 1881 min-width: 24px; 1882 border-radius: 50%; 1883 box-shadow: 0 1px 3px rgba(var(--tuiter-media-black-rgb),0.04); 1884 background: rgba(var(--tuiter-white-rgb),0.74); 1885 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.03); 1886 padding: 0; 1887 z-index: 25; 1888 transition: background 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease; 1889} 1890.chat-bubble .rt-button:hover { background: rgba(var(--tuiter-white-rgb),0.96); box-shadow: 0 2px 5px rgba(var(--tuiter-media-black-rgb),0.05); transform: translateY(-1px); } 1891.chat-bubble .rt-button .rt-btn { font-size: 11px; position: relative; top: 3px; } 1892.chat-bubble .rt-button .rt-count { top: 1px; right: -2px; min-width: 11px; height: 11px; font-size: 9px; background: rgba(var(--tuiter-media-black-rgb),0.28); color: var(--tuiter-white); border: 1px solid rgba(var(--tuiter-white-rgb),0.85); box-shadow: none; opacity: 0.92; } 1893 1894/* left-side bubble: place button at bubble's lower-right (so arrow visually points toward avatar on left) */ 1895.chat-bubble .rt-button.side-left { right: -26px; left: auto; bottom: 58px; } 1896 1897/* right-side bubble: place button at bubble's lower-left (so arrow visually points toward avatar on right) */ 1898.chat-bubble .rt-button.side-right { left: -26px; right: auto; bottom: 58px; } 1899 1900/* Ensure badge stands out on top of bubble */ 1901.chat-bubble .rt-button .rt-count { border: 1px solid rgba(var(--tuiter-white-rgb),0.9); } 1902 1903/* Keep previous chat-rt-button class for other placements but prefer bubble-scoped rules for bubbles */ 1904.rt-button .rt-count, 1905.chat-rt-button .rt-count, 1906.chat-bubble .rt-button .rt-count { 1907 transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.12s ease, opacity 0.12s ease; 1908} 1909 1910 1911/* Hide rt button by default and reveal on hover of the post/chat container */ 1912.rt-button { 1913 /* keep existing sizing/appearance but start hidden */ 1914 opacity: 0; 1915 transform: translateY(4px) scale(0.98); 1916 pointer-events: none; 1917 transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s, opacity 0.18s ease; 1918} 1919 1920/* Reveal when user hovers the relevant container (post card, post wrapper or chat bubble) */ 1921.post:hover .rt-button, 1922.post-content.post-card:hover .rt-button, 1923.post-content.post-card:focus-within .rt-button, 1924.post:hover .post-content.post-card .rt-button, 1925.chat-node:hover .rt-button, 1926.chat-bubble:hover .rt-button, 1927.thread-node:hover .rt-button { 1928 opacity: 0.96; /* match previous visible state */ 1929 transform: translateY(0) scale(1); 1930 pointer-events: auto; 1931} 1932 1933/* On touch devices (no hover), keep button visible so it's usable */ 1934@media (hover: none) { 1935 .rt-button { 1936 opacity: 0.96; 1937 transform: none; 1938 pointer-events: auto; 1939 } 1940} 1941 1942/* Reply input UI (slim, wide chat-like) */ 1943.reply-input-container { 1944 display: flex; 1945 gap: 8px; 1946 align-items: center; 1947 margin-top: 8px; 1948 margin-bottom: 6px; 1949 padding: 6px; 1950 background: rgba(var(--tuiter-white-rgb),0.04); 1951 border-radius: 8px; 1952 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.04); 1953 width: 100%; 1954 max-width: 100%; 1955 box-shadow: 0 1px 4px rgba(var(--tuiter-media-black-rgb),0.03); 1956} 1957 1958.reply-input-container .reply-input { 1959 flex: 1 1 auto; 1960 height: 32px; 1961 padding: 6px 8px; 1962 font-size: 12px; 1963 border-radius: 6px; 1964 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.06); 1965 background: rgba(var(--tuiter-white-rgb),0.9); 1966 color: var(--tuiter-text); 1967} 1968 1969.reply-input-container .reply-input:focus { 1970 outline: none; 1971 box-shadow: 0 0 0 3px rgba(var(--tuiter-accent-rgb),0.08); 1972 border-color: var(--tuiter-accent); 1973} 1974 1975.reply-input-container .reply-submit { 1976 flex: 0 0 auto; 1977 height: 32px; 1978 padding: 6px 10px; 1979 border-radius: 6px; 1980 border: none; 1981 background: var(--tuiter-accent); 1982 color: var(--tuiter-white); 1983 font-weight: 600; 1984 cursor: pointer; 1985} 1986 1987/* Make sure reply input inserted under a bubble/post aligns with the content width */ 1988.chat-node .reply-input-container, 1989.post-content .reply-input-container, 1990.post .reply-input-container { 1991 margin-left: 44px; /* account for avatar column */ 1992 max-width: calc(100% - 44px); 1993} 1994 1995/* For chat-style nodes, reduce left margin for right-side nodes */ 1996.chat-node.right .reply-input-container { margin-left: 8px; margin-right: 44px; max-width: calc(100% - 52px); } 1997 1998@media (max-width: 640px) { 1999 .chat-node .reply-input-container, 2000 .post-content .reply-input-container, 2001 .post .reply-input-container { margin-left: 52px; max-width: calc(100% - 52px); } 2002 .reply-input-container .reply-input { height: 36px; } 2003} 2004 2005/* Small avatar square and placeholder inside the reply input container */ 2006.reply-avatar-square { 2007 width: 28px; 2008 height: 28px; 2009 border-radius: 6px; 2010 object-fit: cover; 2011 flex: 0 0 auto; 2012 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.06); 2013} 2014 2015.reply-avatar-placeholder { 2016 width: 28px; 2017 height: 28px; 2018 border-radius: 6px; 2019 background: rgba(var(--tuiter-avatar-bg-rgb),0.18); 2020 border: 1px solid rgba(var(--tuiter-media-black-rgb),0.04); 2021 flex: 0 0 auto; 2022} 2023 2024/* Adjust input spacing to account for avatar */ 2025.reply-input-container .reply-input { margin-left: 0; } 2026 2027@media (max-width: 640px) { 2028 .reply-avatar-square, .reply-avatar-placeholder { width: 32px; height: 32px; } 2029} 2030 2031/* Absolutely positioned reply input container styles */ 2032.reply-input-container.absolute { 2033 position: absolute; /* set by JS but provide default styling */ 2034 box-shadow: 0 8px 30px rgba(var(--tuiter-media-black-rgb),0.12); 2035 background: rgba(var(--tuiter-white-rgb),0.98); 2036 border-radius: 10px; 2037 padding: 8px 10px; 2038} 2039 2040/* reduce avatar size for floating input to keep it slim */ 2041.reply-input-container.absolute .reply-avatar-square, 2042.reply-input-container.absolute .reply-avatar-placeholder { 2043 width: 32px; 2044 height: 32px; 2045 border-radius: 6px; 2046} 2047 2048.reply-input-container.absolute .reply-input { height: 36px; } 2049 2050/* small screens: make floating input nearly full width */ 2051@media (max-width: 640px) { 2052 .reply-input-container.absolute { left: 8px !important; right: 8px !important; width: auto !important; } 2053}