The 1st decentralized social network for sharing when you're on the toilet. Post a "flush" today! Powered by the AT Protocol.
at main 769 lines 14 kB view raw
1.container { 2 max-width: 800px; 3 margin: 0 auto; 4} 5 6.header { 7 display: flex; 8 justify-content: center; 9 align-items: center; 10 margin-bottom: 2rem; 11 text-align: center; 12 width: 100%; 13} 14 15.headerContent { 16 flex: 1; 17 max-width: 400px; 18 display: flex; 19 flex-direction: column; 20 align-items: center; 21} 22 23.tagline { 24 font-size: 1.5rem; 25 margin-bottom: 0.6rem; 26 word-wrap: break-word; 27 hyphens: auto; 28 line-height: 1.5rem; 29 text-align: center; 30 font-weight: 500; 31} 32 33.description { 34 font-size: 1rem; 35 color: var(--text-color); 36 margin: 0 0 0.6rem 0; 37 line-height: 1.4; 38 word-wrap: break-word; 39 text-align: center; 40} 41 42.donateText, .creditLine { 43 font-size: 0.85rem; 44 color: var(--timestamp-color); 45 margin: 0 0 0.4rem 0; 46 line-height: 1.3; 47 word-wrap: break-word; 48 text-align: center; 49} 50 51.kofiLink { 52 color: var(--primary-color); 53 text-decoration: none; 54 transition: color 0.2s; 55} 56 57.kofiLink:hover { 58 text-decoration: underline; 59} 60 61/* Responsive adjustments */ 62@media (max-width: 600px) { 63 .tagline { 64 font-size: 1.3rem; 65 line-height: 1.4rem; 66 } 67 68 .description { 69 font-size: 0.95rem; 70 } 71 72 .donateText, .creditLine { 73 font-size: 0.8rem; 74 } 75} 76 77@media (max-width: 400px) { 78 .tagline { 79 font-size: 1.2rem; 80 line-height: 1.3rem; 81 } 82 83 .description { 84 font-size: 0.9rem; 85 } 86 87 .donateText, .creditLine { 88 font-size: 0.75rem; 89 } 90} 91 92/* Rest of your existing CSS */ 93 94.userInfo { 95 color: var(--text-color); 96 font-weight: 500; 97 text-decoration: none; 98 transition: color 0.2s; 99} 100 101.userInfo:hover { 102 color: var(--primary-color); 103 text-decoration: underline; 104} 105 106.logoutButton { 107 background-color: transparent; 108 color: var(--primary-color); 109 border: 1px solid var(--primary-color); 110 padding: 0.3rem 0.8rem; 111 font-size: 0.9rem; 112 border-radius: 4px; 113 cursor: pointer; 114 transition: all 0.2s; 115} 116 117.logoutButton:hover { 118 background-color: var(--button-hover); 119} 120 121.loginButton { 122 display: inline-block; 123 background-color: var(--primary-color); 124 color: white; 125 padding: 0.6rem 1.2rem; 126 border-radius: 4px; 127 font-size: 1rem; 128 font-weight: 500; 129 transition: all 0.2s ease; 130 text-decoration: none; 131} 132 133.loginButton:hover { 134 background-color: var(--secondary-color); 135 transform: translateY(-2px); 136} 137 138/* Status form styles */ 139.statusUpdateContainer { 140 overflow: hidden; 141 transition: max-height 0.5s ease-in-out, opacity 0.3s ease-in-out, transform 0.3s ease; 142 max-height: 0; 143 opacity: 0; 144 transform: translateY(-20px); 145 margin-bottom: 0; 146} 147 148.statusUpdateOpen { 149 max-height: 1200px; /* Large enough to contain all content */ 150 opacity: 1; 151 transform: translateY(0); 152 margin-bottom: 2rem; 153} 154 155.toggleButton { 156 background-color: var(--primary-color); 157 color: white; 158 border: none; 159 border-radius: 4px; 160 padding: 0.5rem 1rem; 161 margin-bottom: 1rem; 162 cursor: pointer; 163 display: flex; 164 align-items: center; 165 gap: 0.5rem; 166 transition: background-color 0.2s, transform 0.2s; 167} 168 169.toggleButton:hover { 170 background-color: var(--secondary-color); 171 transform: translateY(-2px); 172} 173 174.toggleButton svg { 175 width: 16px; 176 height: 16px; 177 transition: transform 0.3s ease; 178} 179 180.toggleButtonActive svg { 181 transform: rotate(180deg); 182} 183 184.card { 185 background: var(--card-background); 186 border-radius: 8px; 187 padding: 2rem; 188} 189 190@media (max-width: 600px) { 191 .card { 192 padding: 1.5rem 1rem; 193 } 194} 195 196.form { 197 margin-top: 1rem; 198} 199 200.formGroup { 201 margin-bottom: 1.5rem; 202} 203 204.formGroup label { 205 display: block; 206 margin-bottom: 0.5rem; 207 font-weight: 500; 208} 209 210.emojiNote { 211 display: none; /* Hide since we don't need to scroll anymore */ 212 margin: 0 0 0.5rem 0; 213 font-size: 0.85rem; 214 color: var(--timestamp-color); 215 font-style: italic; 216} 217 218.input { 219 width: 100%; 220 padding: 0.8rem; 221 border: 1px solid var(--input-border); 222 border-radius: 4px; 223 font-size: 1rem; 224 background-color: var(--input-background); 225 color: var(--text-color); 226} 227 228.input:focus { 229 border-color: var(--primary-color); 230 outline: none; 231} 232 233.inputWrapper { 234 display: flex; 235 align-items: center; 236 width: 100%; 237 position: relative; 238 border: 1px solid var(--input-border); 239 border-radius: 4px; 240 background-color: var(--input-background); 241} 242 243.inputWrapper:focus-within { 244 border-color: var(--primary-color); 245} 246 247.inputPrefix { 248 padding: 0.8rem 0.8rem 0.8rem 0.8rem; 249 font-size: 1rem; 250 color: var(--text-color); 251 font-weight: 500; 252 background-color: var(--input-prefix-background); 253 border-right: 1px solid var(--input-border); 254 border-radius: 4px 0 0 4px; 255} 256 257.inputWithPrefix { 258 flex: 1; 259 border: none; 260 padding: 0.8rem; 261 font-size: 1rem; 262 background: transparent; 263 border-radius: 0 4px 4px 0; 264 color: var(--text-color); 265} 266 267.inputWithPrefix:focus { 268 outline: none; 269 box-shadow: none; 270} 271 272.charCount { 273 text-align: right; 274 color: var(--timestamp-color); 275 font-size: 0.8rem; 276 margin-top: 0.3rem; 277} 278 279.emojiGrid { 280 display: grid; 281 grid-template-columns: repeat(auto-fill, minmax(2.2rem, 1fr)); 282 gap: 0.5rem; 283 padding: 0.8rem; 284 border: 1px solid var(--input-border); 285 border-radius: 8px; 286 background-color: var(--emoji-grid-bg); 287 max-height: none; /* Remove height restriction */ 288 overflow-y: visible; /* No need for scrolling */ 289} 290 291@media (max-width: 600px) { 292 .emojiGrid { 293 grid-template-columns: repeat(auto-fill, minmax(2rem, 1fr)); 294 gap: 0.4rem; 295 padding: 0.6rem; 296 } 297} 298 299@media (max-width: 400px) { 300 .emojiGrid { 301 grid-template-columns: repeat(auto-fill, minmax(1.8rem, 1fr)); 302 gap: 0.3rem; 303 padding: 0.5rem; 304 } 305} 306 307.emojiButton { 308 background: var(--emoji-button-bg); 309 border: 1px solid var(--emoji-button-border); 310 border-radius: 4px; 311 font-size: 1.3rem; 312 aspect-ratio: 1/1; 313 display: flex; 314 align-items: center; 315 justify-content: center; 316 cursor: pointer; 317 transition: all 0.2s; 318 padding: 0.5rem; 319 min-width: 2rem; 320 min-height: 2rem; 321} 322 323@media (max-width: 600px) { 324 .emojiButton { 325 font-size: 1.2rem; 326 padding: 0.4rem; 327 min-width: 1.8rem; 328 min-height: 1.8rem; 329 } 330} 331 332.emojiButton:hover { 333 background: var(--button-hover); 334 transform: scale(1.05); 335} 336 337.selectedEmoji { 338 background: rgba(91, 173, 240, 0.2); 339 border-color: var(--primary-color); 340} 341 342.preview { 343 background: var(--background-color); 344 padding: 1rem; 345 border-radius: 4px; 346 margin-bottom: 1.5rem; 347 border: 1px solid var(--tile-border); 348} 349 350.previewTitle { 351 font-weight: 500; 352 margin-bottom: 0.5rem; 353 color: var(--text-color); 354} 355 356.previewContent { 357 display: flex; 358 align-items: center; 359 gap: 0.5rem; 360} 361 362.previewEmoji { 363 font-size: 1.5rem; 364} 365 366.submitButton { 367 background-color: var(--primary-color); 368 color: white; 369 border: none; 370 border-radius: 4px; 371 padding: 0.8rem 1.5rem; 372 font-size: 1.1rem; 373 font-weight: 500; 374 cursor: pointer; 375 transition: all 0.2s; 376 width: 100%; 377} 378 379.submitButton:hover:not(:disabled) { 380 background-color: var(--secondary-color); 381 transform: translateY(-2px); 382} 383 384.submitButton:disabled { 385 background-color: var(--button-disabled); 386 color: var(--button-disabled-text); 387 cursor: not-allowed; 388} 389 390.success { 391 background-color: var(--success-background); 392 color: var(--success-text); 393 padding: 1rem; 394 border-radius: 4px; 395 margin: 1rem 0; 396} 397 398/* Feed styles */ 399.feedSection { 400 margin-top: 1rem; 401} 402 403@keyframes slideIn { 404 from { 405 opacity: 0; 406 transform: translateY(-20px); 407 } 408 to { 409 opacity: 1; 410 transform: translateY(0); 411 } 412} 413 414.newFeedItem { 415 animation: slideIn 0.5s ease-out; 416} 417 418.feedHeader { 419 display: flex; 420 justify-content: space-between; 421 align-items: center; 422 margin-bottom: 1rem; 423 padding-bottom: 0.5rem; 424 border-bottom: 1px solid var(--tile-border); 425} 426 427.feedHeaderLeft { 428 display: flex; 429 flex-direction: column; 430} 431 432.feedHeader h2 { 433 font-size: 1.5rem; 434 line-height: 1.2; 435 margin: 0; 436 margin-bottom: 0.25rem; 437} 438 439.feedSubheader { 440 font-size: 0.9rem; 441 color: var(--timestamp-color); 442 margin: 0; 443 display: flex; 444 flex-direction: column; 445} 446 447.statsLink { 448 display: block; 449 color: var(--primary-color); 450 font-weight: 500; 451 text-decoration: none; 452 transition: color 0.2s; 453 margin-top: 0.5rem; 454 margin-bottom: 2rem; 455} 456 457.statsLink:hover { 458 text-decoration: underline; 459 color: var(--secondary-color); 460} 461 462.refreshButton { 463 background-color: var(--primary-color); 464 color: white; 465 border: none; 466 border-radius: 4px; 467 padding: 0.5rem 1rem; 468 font-size: 1rem; 469 cursor: pointer; 470 transition: background-color 0.2s; 471 padding-top: 10px; 472} 473 474.refreshButton:hover { 475 background-color: var(--secondary-color); 476} 477 478.refreshButton:disabled { 479 background-color: var(--button-disabled); 480 color: var(--button-disabled-text); 481 cursor: not-allowed; 482} 483 484.feedList { 485 display: flex; 486 flex-direction: column; 487 gap: 1rem; 488 margin-top: 1rem; 489} 490 491.feedItem { 492 background-color: var(--card-background); 493 border: 1px solid var(--tile-border); 494 border-radius: 8px; 495 padding: 1rem; 496 transition: transform 0.2s; 497} 498 499.feedItem:hover { 500 transform: translateY(-2px); 501} 502 503@media (max-width: 600px) { 504 .feedItem { 505 padding: 0.75rem; 506 margin-bottom: 0.5rem; 507 border-radius: 6px; 508 } 509 510 .feedList { 511 gap: 0.5rem; 512 } 513 514 .feedItem:hover { 515 transform: none; 516 } 517} 518 519.content { 520 display: flex; 521 align-items: flex-start; 522 gap: 0.75rem; 523 justify-content: space-between; 524 width: 100%; 525 flex-wrap: wrap; 526} 527 528.contentLeft { 529 display: flex; 530 align-items: center; 531 gap: 0.75rem; 532 flex: 1; 533 min-width: 0; 534} 535 536.contentRight { 537 display: flex; 538 align-items: center; 539 gap: 0.75rem; 540 margin-left: auto; 541} 542 543.editButton { 544 background: none; 545 border: 1px solid var(--tile-border); 546 color: var(--text-color); 547 padding: 6px; 548 cursor: pointer; 549 display: flex; 550 align-items: center; 551 justify-content: center; 552 transition: all 0.2s; 553 width: 32px; 554 height: 32px; 555 border-radius: 4px; 556} 557 558.editButton svg { 559 width: 16px; 560 height: 16px; 561} 562 563.editButton:hover { 564 border-color: var(--primary-color); 565 color: var(--primary-color); 566 background: rgba(91, 173, 240, 0.05); 567} 568 569.userLine { 570 display: flex; 571 align-items: center; 572 gap: 0.75rem; 573} 574 575.emoji { 576 font-size: 1.5rem; 577 flex-shrink: 0; 578 line-height: 1; 579 display: flex; 580 align-items: center; 581} 582 583.authorLink { 584 color: var(--primary-color); 585 font-weight: 600; 586 text-decoration: none; 587 max-width: 180px; 588 white-space: nowrap; 589 overflow: hidden; 590 text-overflow: ellipsis; 591 display: inline-block; 592} 593 594.authorLink:hover { 595 text-decoration: underline; 596} 597 598.text { 599 font-size: 1.1rem; 600 line-height: 1.4; 601 color: var(--text-color); 602 flex: 1; 603 min-width: 0; 604 word-wrap: break-word; 605 overflow-wrap: break-word; 606 hyphens: auto; 607} 608 609.timestamp { 610 font-size: 0.85rem; 611 color: var(--timestamp-color); 612 margin-left: auto; 613 white-space: nowrap; 614} 615 616@media (max-width: 600px) { 617 .content { 618 flex-direction: column; 619 gap: 0.25rem; 620 align-items: flex-start; 621 } 622 623 .contentLeft { 624 display: block; 625 width: 100%; 626 } 627 628 /* First line: emoji and username */ 629 .emoji { 630 display: inline-block; 631 font-size: 1.3rem; 632 vertical-align: middle; 633 margin-right: 0.5rem; 634 } 635 636 .authorLink { 637 display: inline-block; 638 vertical-align: middle; 639 white-space: nowrap; 640 overflow: hidden; 641 text-overflow: ellipsis; 642 max-width: 180px; /* Increased width on mobile */ 643 } 644 645 /* Second line: status text */ 646 .text { 647 display: block; 648 font-size: 0.95rem; 649 line-height: 1.3; 650 margin-top: 0.3rem; 651 padding-bottom: 0.2rem; 652 } 653 654 /* Third line: timestamp */ 655 .timestamp { 656 display: block; 657 width: 100%; 658 text-align: left; 659 font-size: 0.8rem; 660 color: #888; 661 } 662} 663 664.loadingContainer { 665 display: flex; 666 flex-direction: column; 667 align-items: center; 668 justify-content: center; 669 padding: 2rem; 670 text-align: center; 671} 672 673.loader { 674 border: 4px solid #f3f3f3; 675 border-top: 4px solid var(--primary-color); 676 border-radius: 50%; 677 width: 24px; 678 height: 24px; 679 animation: spin 1s linear infinite; 680 margin-bottom: 1rem; 681} 682 683@keyframes spin { 684 0% { transform: rotate(0deg); } 685 100% { transform: rotate(360deg); } 686} 687 688.emptyState { 689 text-align: center; 690 padding: 2rem; 691 background-color: var(--background-color); 692 border-radius: 8px; 693 border: 1px dashed var(--tile-border); 694} 695 696.loadMoreButton { 697 width: 100%; 698 background-color: var(--button-background); 699 color: var(--button-text); 700 border: 1px solid var(--input-border); 701 border-radius: 8px; 702 padding: 1rem; 703 font-size: 1rem; 704 font-weight: 500; 705 cursor: pointer; 706 margin-top: 1rem; 707 transition: all 0.2s; 708 display: flex; 709 justify-content: center; 710 align-items: center; 711 gap: 0.5rem; 712 padding-top: 1.1rem; 713} 714 715.loadMoreButton:hover { 716 background-color: var(--button-hover); 717} 718 719.loadMoreButton:disabled { 720 background-color: var(--button-disabled); 721 color: var(--button-disabled-text); 722 cursor: not-allowed; 723} 724 725.loadMoreButton svg { 726 width: 16px; 727 height: 16px; 728} 729 730.error { 731 background-color: #ffebee; 732 color: #c62828; 733 padding: 1rem; 734 border-radius: 4px; 735 margin-bottom: 1rem; 736 line-height: 1.5; 737} 738 739.notice { 740 background-color: #fff3e0; 741 color: #e65100; 742 padding: 1rem; 743 border-radius: 4px; 744 margin-top: 1rem; 745 margin-bottom: 1.5rem; 746 border: 2px solid #ff9800; 747 font-size: 1.1rem; 748 line-height: 1.4; 749 text-align: center; 750 font-weight: 500; 751} 752 753.noticePersonal { 754 margin-top: 0.8rem; 755 font-size: 0.95rem; 756 padding-top: 0.5rem; 757 border-top: 1px dashed rgba(255, 152, 0, 0.3); 758} 759 760.noticeLink { 761 color: #e65100; 762 font-weight: 600; 763 text-decoration: underline; 764 transition: color 0.2s; 765} 766 767.noticeLink:hover { 768 color: #f57c00; 769}