Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
at v0.1.12 59 kB view raw
1:root { 2 --bg-primary: #0c0a14; 3 --bg-secondary: #110e1c; 4 --bg-tertiary: #1a1528; 5 --bg-card: #14111f; 6 --bg-hover: #1e1932; 7 --bg-elevated: #1a1528; 8 9 --text-primary: #f4f0ff; 10 --text-secondary: #a89ec8; 11 --text-tertiary: #6b5f8a; 12 13 --accent: #a855f7; 14 --accent-hover: #c084fc; 15 --accent-subtle: rgba(168, 85, 247, 0.15); 16 17 --border: #2d2640; 18 --border-hover: #3d3560; 19 20 --success: #22c55e; 21 --error: #ef4444; 22 --warning: #f59e0b; 23 24 --radius-sm: 6px; 25 --radius-md: 10px; 26 --radius-lg: 16px; 27 --radius-full: 9999px; 28 29 --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3); 30 --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4); 31 --shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.5), 0 0 40px rgba(168, 85, 247, 0.1); 32 --shadow-glow: 0 0 20px rgba(168, 85, 247, 0.3); 33 34 --font-sans: 35 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; 36} 37 38* { 39 margin: 0; 40 padding: 0; 41 box-sizing: border-box; 42} 43 44html { 45 font-size: 16px; 46} 47 48body { 49 font-family: var(--font-sans); 50 background: var(--bg-primary); 51 color: var(--text-primary); 52 line-height: 1.6; 53 min-height: 100vh; 54 -webkit-font-smoothing: antialiased; 55 -moz-osx-font-smoothing: grayscale; 56} 57 58a { 59 color: var(--accent); 60 text-decoration: none; 61 transition: color 0.15s ease; 62} 63 64a:hover { 65 color: var(--accent-hover); 66} 67 68button { 69 font-family: inherit; 70 cursor: pointer; 71 border: none; 72 background: none; 73} 74 75input, 76textarea { 77 font-family: inherit; 78 font-size: inherit; 79} 80 81.app { 82 min-height: 100vh; 83 display: flex; 84 flex-direction: column; 85} 86 87.main-content { 88 flex: 1; 89 max-width: 680px; 90 width: 100%; 91 margin: 0 auto; 92 padding: 24px 16px; 93} 94 95.btn { 96 display: inline-flex; 97 align-items: center; 98 justify-content: center; 99 gap: 8px; 100 padding: 10px 20px; 101 font-size: 0.9rem; 102 font-weight: 500; 103 border-radius: var(--radius-md); 104 transition: all 0.15s ease; 105} 106 107.btn-primary { 108 background: var(--accent); 109 color: white; 110} 111 112.btn-primary:hover { 113 background: var(--accent-hover); 114 transform: translateY(-1px); 115 box-shadow: var(--shadow-md); 116} 117 118.btn-secondary { 119 background: var(--bg-tertiary); 120 color: var(--text-primary); 121 border: 1px solid var(--border); 122} 123 124.btn-secondary:hover { 125 background: var(--bg-hover); 126 border-color: var(--border-hover); 127} 128 129.btn-ghost { 130 color: var(--text-secondary); 131 padding: 8px 12px; 132} 133 134.btn-ghost:hover { 135 color: var(--text-primary); 136 background: var(--bg-tertiary); 137} 138 139.card { 140 background: var(--bg-card); 141 border: 1px solid var(--border); 142 border-radius: var(--radius-lg); 143 padding: 24px; 144 transition: all 0.2s ease; 145 position: relative; 146} 147 148.card:hover { 149 border-color: var(--border-hover); 150 box-shadow: var(--shadow-md); 151 transform: translateY(-1px); 152} 153 154.annotation-card { 155 display: flex; 156 flex-direction: column; 157 gap: 16px; 158} 159 160.annotation-header { 161 display: flex; 162 justify-content: space-between; 163 align-items: flex-start; 164 gap: 12px; 165} 166 167.annotation-header-left { 168 display: flex; 169 align-items: center; 170 gap: 12px; 171 flex: 1; 172 min-width: 0; 173} 174 175.annotation-avatar { 176 width: 40px; 177 height: 40px; 178 min-width: 40px; 179 border-radius: var(--radius-full); 180 background: linear-gradient(135deg, var(--accent), #a855f7); 181 display: flex; 182 align-items: center; 183 justify-content: center; 184 font-weight: 600; 185 font-size: 0.95rem; 186 color: white; 187 overflow: hidden; 188 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); 189} 190 191.annotation-avatar img { 192 width: 100%; 193 height: 100%; 194 object-fit: cover; 195} 196 197.annotation-meta { 198 display: flex; 199 flex-direction: column; 200 justify-content: center; 201 line-height: 1.3; 202} 203 204.annotation-avatar-link { 205 text-decoration: none; 206 border-radius: var(--radius-full); 207 transition: transform 0.15s ease; 208} 209 210.annotation-avatar-link:hover { 211 transform: scale(1.05); 212} 213 214.annotation-author-row { 215 display: flex; 216 align-items: center; 217 gap: 6px; 218 flex-wrap: wrap; 219} 220 221.annotation-author { 222 font-weight: 600; 223 color: var(--text-primary); 224 font-size: 0.95rem; 225} 226 227.annotation-handle { 228 font-size: 0.85rem; 229 color: var(--text-tertiary); 230 text-decoration: none; 231 display: flex; 232 align-items: center; 233 gap: 3px; 234} 235 236.annotation-handle:hover { 237 color: var(--accent); 238} 239 240.annotation-time { 241 font-size: 0.8rem; 242 color: var(--text-tertiary); 243} 244 245.annotation-content { 246 display: flex; 247 flex-direction: column; 248 gap: 12px; 249} 250 251.annotation-source { 252 display: inline-flex; 253 align-items: center; 254 gap: 6px; 255 font-size: 0.8rem; 256 color: var(--text-tertiary); 257 text-decoration: none; 258 padding: 4px 10px; 259 background: var(--bg-tertiary); 260 border-radius: var(--radius-full); 261 width: fit-content; 262 transition: all 0.15s ease; 263 max-width: 100%; 264 overflow: hidden; 265 text-overflow: ellipsis; 266 white-space: nowrap; 267} 268 269.annotation-source:hover { 270 color: var(--text-primary); 271 background: var(--bg-hover); 272} 273 274.annotation-source-title { 275 color: var(--text-secondary); 276 opacity: 0.8; 277} 278 279.annotation-highlight { 280 display: block; 281 position: relative; 282 padding: 16px 20px; 283 background: linear-gradient( 284 135deg, 285 rgba(79, 70, 229, 0.03), 286 rgba(168, 85, 247, 0.03) 287 ); 288 border-left: 3px solid var(--accent); 289 border-radius: 4px var(--radius-md) var(--radius-md) 4px; 290 text-decoration: none; 291 transition: all 0.2s ease; 292 margin: 4px 0; 293} 294 295.annotation-highlight:hover { 296 background: linear-gradient( 297 135deg, 298 rgba(79, 70, 229, 0.08), 299 rgba(168, 85, 247, 0.08) 300 ); 301 transform: translateX(2px); 302} 303 304.annotation-highlight mark { 305 background: transparent; 306 color: var(--text-primary); 307 font-style: italic; 308 font-size: 1.05rem; 309 line-height: 1.6; 310 font-weight: 400; 311 display: inline; 312} 313 314.annotation-text { 315 font-size: 1rem; 316 line-height: 1.65; 317 color: var(--text-primary); 318 white-space: pre-wrap; 319} 320 321.annotation-actions { 322 display: flex; 323 align-items: center; 324 justify-content: space-between; 325 padding-top: 16px; 326 margin-top: 8px; 327 border-top: 1px solid rgba(255, 255, 255, 0.03); 328} 329 330.annotation-actions-left { 331 display: flex; 332 align-items: center; 333 gap: 8px; 334} 335 336.annotation-action { 337 display: flex; 338 align-items: center; 339 gap: 6px; 340 color: var(--text-tertiary); 341 font-size: 0.85rem; 342 font-weight: 500; 343 padding: 6px 10px; 344 border-radius: var(--radius-md); 345 transition: all 0.2s ease; 346 background: transparent; 347 cursor: pointer; 348} 349 350.annotation-action:hover { 351 color: var(--text-secondary); 352 background: var(--bg-elevated); 353} 354 355.annotation-action.liked { 356 color: #ef4444; 357 background: rgba(239, 68, 68, 0.05); 358} 359 360.annotation-action.liked:hover { 361 background: rgba(239, 68, 68, 0.1); 362} 363 364.annotation-action.active { 365 color: var(--accent); 366 background: var(--accent-subtle); 367} 368 369.action-icon-only { 370 padding: 8px; 371} 372 373.annotation-delete { 374 background: none; 375 border: none; 376 cursor: pointer; 377 padding: 8px; 378 font-size: 1rem; 379 color: var(--text-tertiary); 380 transition: all 0.2s ease; 381 border-radius: var(--radius-md); 382 opacity: 0.6; 383} 384 385.annotation-delete:hover { 386 color: var(--error); 387 background: rgba(239, 68, 68, 0.1); 388 opacity: 1; 389} 390 391.annotation-delete:disabled { 392 cursor: not-allowed; 393 opacity: 0.3; 394} 395 396.share-menu-container { 397 position: relative; 398} 399 400.share-menu { 401 position: absolute; 402 top: 100%; 403 right: 0; 404 margin-top: 8px; 405 background: var(--bg-primary); 406 border: 1px solid var(--border); 407 border-radius: var(--radius-lg); 408 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); 409 min-width: 180px; 410 padding: 8px 0; 411 z-index: 100; 412 animation: fadeInUp 0.15s ease; 413} 414 415@keyframes fadeInUp { 416 from { 417 opacity: 0; 418 transform: translateY(-8px); 419 } 420 421 to { 422 opacity: 1; 423 transform: translateY(0); 424 } 425} 426 427.share-menu-section { 428 display: flex; 429 flex-direction: column; 430} 431 432.share-menu-label { 433 padding: 4px 12px 8px; 434 font-size: 0.7rem; 435 font-weight: 600; 436 text-transform: uppercase; 437 letter-spacing: 0.05em; 438 color: var(--text-tertiary); 439} 440 441.share-menu-item { 442 display: flex; 443 align-items: center; 444 gap: 10px; 445 padding: 10px 14px; 446 background: none; 447 border: none; 448 width: 100%; 449 text-align: left; 450 font-size: 0.9rem; 451 color: var(--text-primary); 452 cursor: pointer; 453 transition: all 0.1s ease; 454} 455 456.share-menu-item:hover { 457 background: var(--bg-tertiary); 458} 459 460.share-menu-icon { 461 font-size: 1.1rem; 462 width: 24px; 463 text-align: center; 464} 465 466.share-menu-divider { 467 height: 1px; 468 background: var(--border); 469 margin: 6px 0; 470} 471 472.feed { 473 display: flex; 474 flex-direction: column; 475 gap: 16px; 476} 477 478.feed-header { 479 display: flex; 480 align-items: center; 481 justify-content: space-between; 482 margin-bottom: 8px; 483} 484 485.feed-title { 486 font-size: 1.5rem; 487 font-weight: 700; 488} 489 490.page-header { 491 margin-bottom: 32px; 492} 493 494.page-title { 495 font-size: 2rem; 496 font-weight: 700; 497 margin-bottom: 8px; 498} 499 500.page-description { 501 color: var(--text-secondary); 502 font-size: 1.1rem; 503} 504 505.url-input-wrapper { 506 margin-bottom: 32px; 507} 508 509.url-input-container { 510 display: flex; 511 gap: 12px; 512} 513 514.url-input { 515 flex: 1; 516 padding: 14px 18px; 517 background: var(--bg-secondary); 518 border: 1px solid var(--border); 519 border-radius: var(--radius-md); 520 color: var(--text-primary); 521 font-size: 1rem; 522 transition: all 0.15s ease; 523} 524 525.url-input:focus { 526 outline: none; 527 border-color: var(--accent); 528 box-shadow: 0 0 0 3px var(--accent-subtle); 529} 530 531.url-input::placeholder { 532 color: var(--text-tertiary); 533} 534 535.empty-state { 536 text-align: center; 537 padding: 60px 20px; 538 color: var(--text-secondary); 539} 540 541.empty-state-icon { 542 font-size: 3rem; 543 margin-bottom: 16px; 544 opacity: 0.5; 545} 546 547.empty-state-title { 548 font-size: 1.25rem; 549 font-weight: 600; 550 color: var(--text-primary); 551 margin-bottom: 8px; 552} 553 554.empty-state-text { 555 font-size: 1rem; 556 max-width: 400px; 557 margin: 0 auto; 558} 559 560.feed-filters { 561 display: flex; 562 gap: 8px; 563 margin-bottom: 24px; 564 padding: 4px; 565 background: var(--bg-tertiary); 566 border-radius: var(--radius-lg); 567 width: fit-content; 568} 569 570.login-page { 571 display: flex; 572 flex-direction: column; 573 align-items: center; 574 justify-content: center; 575 min-height: 70vh; 576 padding: 60px 20px; 577 width: 100%; 578 max-width: 500px; 579 margin: 0 auto; 580} 581 582.login-at-logo { 583 font-size: 5rem; 584 font-weight: 800; 585 color: var(--accent); 586 margin-bottom: 24px; 587 line-height: 1; 588} 589 590.login-heading { 591 font-size: 1.5rem; 592 font-weight: 600; 593 margin-bottom: 32px; 594 display: flex; 595 align-items: center; 596 gap: 10px; 597 text-align: center; 598 line-height: 1.4; 599} 600 601.login-help-btn { 602 background: none; 603 border: none; 604 color: var(--text-tertiary); 605 cursor: pointer; 606 padding: 4px; 607 display: flex; 608 align-items: center; 609 transition: color 0.15s; 610 flex-shrink: 0; 611} 612 613.login-help-btn:hover { 614 color: var(--accent); 615} 616 617.login-help-text { 618 background: var(--bg-elevated); 619 border: 1px solid var(--border); 620 border-radius: var(--radius-md); 621 padding: 16px 20px; 622 margin-bottom: 24px; 623 font-size: 0.95rem; 624 color: var(--text-secondary); 625 line-height: 1.6; 626 text-align: center; 627} 628 629.login-help-text code { 630 background: var(--bg-tertiary); 631 padding: 2px 8px; 632 border-radius: var(--radius-sm); 633 font-size: 0.9rem; 634} 635 636.login-form { 637 display: flex; 638 flex-direction: column; 639 gap: 20px; 640 width: 100%; 641} 642 643.login-input-wrapper { 644 position: relative; 645} 646 647.login-input { 648 width: 100%; 649 padding: 18px 20px; 650 background: var(--bg-elevated); 651 border: 2px solid var(--border); 652 border-radius: var(--radius-lg); 653 color: var(--text-primary); 654 font-size: 1.1rem; 655 transition: 656 border-color 0.15s, 657 box-shadow 0.15s; 658} 659 660.login-input:focus { 661 outline: none; 662 border-color: var(--accent); 663 box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.15); 664} 665 666.login-input::placeholder { 667 color: var(--text-tertiary); 668} 669 670.login-suggestions { 671 position: absolute; 672 top: calc(100% + 8px); 673 left: 0; 674 right: 0; 675 background: var(--bg-card); 676 border: 1px solid var(--border); 677 border-radius: var(--radius-lg); 678 box-shadow: var(--shadow-lg); 679 overflow: hidden; 680 z-index: 100; 681} 682 683.login-suggestion { 684 display: flex; 685 align-items: center; 686 gap: 14px; 687 width: 100%; 688 padding: 14px 18px; 689 background: transparent; 690 border: none; 691 cursor: pointer; 692 text-align: left; 693 color: var(--text-primary); 694 transition: background 0.1s; 695} 696 697.login-suggestion:hover, 698.login-suggestion.selected { 699 background: var(--bg-elevated); 700} 701 702.login-suggestion-avatar { 703 width: 44px; 704 height: 44px; 705 border-radius: var(--radius-full); 706 background: linear-gradient(135deg, var(--accent), #a855f7); 707 display: flex; 708 align-items: center; 709 justify-content: center; 710 flex-shrink: 0; 711 overflow: hidden; 712 font-size: 0.9rem; 713 font-weight: 600; 714 color: white; 715} 716 717.login-suggestion-avatar img { 718 width: 100%; 719 height: 100%; 720 object-fit: cover; 721} 722 723.login-suggestion-info { 724 display: flex; 725 flex-direction: column; 726 gap: 2px; 727 min-width: 0; 728} 729 730.login-suggestion-name { 731 font-weight: 600; 732 font-size: 1rem; 733 color: var(--text-primary); 734 white-space: nowrap; 735 overflow: hidden; 736 text-overflow: ellipsis; 737} 738 739.login-suggestion-handle { 740 font-size: 0.9rem; 741 color: var(--text-secondary); 742 white-space: nowrap; 743 overflow: hidden; 744 text-overflow: ellipsis; 745} 746 747.login-error { 748 padding: 12px 16px; 749 background: rgba(239, 68, 68, 0.1); 750 border: 1px solid rgba(239, 68, 68, 0.3); 751 border-radius: var(--radius-md); 752 color: #ef4444; 753 font-size: 0.9rem; 754 text-align: center; 755} 756 757.login-submit { 758 padding: 18px 32px; 759 font-size: 1.1rem; 760 font-weight: 600; 761} 762 763.login-avatar-large { 764 width: 100px; 765 height: 100px; 766 border-radius: var(--radius-full); 767 background: linear-gradient(135deg, var(--accent), #a855f7); 768 display: flex; 769 align-items: center; 770 justify-content: center; 771 margin-bottom: 20px; 772 font-weight: 700; 773 font-size: 2rem; 774 color: white; 775 overflow: hidden; 776} 777 778.login-avatar-large img { 779 width: 100%; 780 height: 100%; 781 object-fit: cover; 782} 783 784.login-welcome { 785 font-size: 1.5rem; 786 font-weight: 600; 787 margin-bottom: 32px; 788 text-align: center; 789} 790 791.login-actions { 792 display: flex; 793 flex-direction: column; 794 gap: 12px; 795 width: 100%; 796} 797 798.login-avatar { 799 width: 72px; 800 height: 72px; 801 border-radius: var(--radius-full); 802 background: linear-gradient(135deg, var(--accent), #a855f7); 803 display: flex; 804 align-items: center; 805 justify-content: center; 806 margin: 0 auto 16px; 807 font-weight: 700; 808 font-size: 1.5rem; 809 color: white; 810 overflow: hidden; 811} 812 813.login-avatar img { 814 width: 100%; 815 height: 100%; 816 object-fit: cover; 817} 818 819.login-welcome-name { 820 font-size: 1.25rem; 821 font-weight: 600; 822 margin-bottom: 24px; 823} 824 825.login-actions { 826 display: flex; 827 flex-direction: column; 828 gap: 12px; 829} 830 831.btn-bluesky { 832 background: #0085ff; 833 color: white; 834 display: flex; 835 align-items: center; 836 justify-content: center; 837 gap: 10px; 838 transition: 839 background 0.2s, 840 transform 0.2s; 841} 842 843.btn-bluesky:hover { 844 background: #0070dd; 845 transform: translateY(-1px); 846} 847 848.login-btn { 849 width: 100%; 850 padding: 14px 24px; 851 font-size: 1rem; 852 font-weight: 600; 853} 854 855.login-brand { 856 display: flex; 857 align-items: center; 858 justify-content: center; 859 gap: 12px; 860 margin-bottom: 24px; 861} 862 863.login-brand-icon { 864 width: 48px; 865 height: 48px; 866 background: linear-gradient(135deg, var(--accent), #a855f7); 867 border-radius: var(--radius-lg); 868 display: flex; 869 align-items: center; 870 justify-content: center; 871 font-size: 1.75rem; 872 font-weight: 800; 873 color: white; 874} 875 876.login-brand-name { 877 font-size: 1.75rem; 878 font-weight: 700; 879} 880 881.login-form { 882 display: flex; 883 flex-direction: column; 884 gap: 16px; 885} 886 887.login-input-wrapper { 888 position: relative; 889} 890 891.login-input { 892 width: 100%; 893 padding: 14px 16px; 894 background: var(--bg-elevated); 895 border: 1px solid var(--border); 896 border-radius: var(--radius-md); 897 color: var(--text-primary); 898 font-size: 1rem; 899 transition: 900 border-color 0.15s, 901 box-shadow 0.15s; 902} 903 904.login-input:focus { 905 outline: none; 906 border-color: var(--accent); 907 box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15); 908} 909 910.login-input::placeholder { 911 color: var(--text-tertiary); 912} 913 914.login-suggestions { 915 position: absolute; 916 top: calc(100% + 4px); 917 left: 0; 918 right: 0; 919 background: var(--bg-card); 920 border: 1px solid var(--border); 921 border-radius: var(--radius-md); 922 box-shadow: var(--shadow-lg); 923 overflow: hidden; 924 z-index: 100; 925} 926 927.login-suggestion { 928 display: flex; 929 align-items: center; 930 gap: 12px; 931 width: 100%; 932 padding: 12px 16px; 933 background: transparent; 934 border: none; 935 cursor: pointer; 936 text-align: left; 937 transition: background 0.1s; 938} 939 940.login-suggestion:hover, 941.login-suggestion.selected { 942 background: var(--bg-elevated); 943} 944 945.login-suggestion-avatar { 946 width: 40px; 947 height: 40px; 948 border-radius: var(--radius-full); 949 background: linear-gradient(135deg, var(--accent), #a855f7); 950 display: flex; 951 align-items: center; 952 justify-content: center; 953 flex-shrink: 0; 954 overflow: hidden; 955 font-size: 0.875rem; 956 font-weight: 600; 957 color: white; 958} 959 960.login-suggestion-avatar img { 961 width: 100%; 962 height: 100%; 963 object-fit: cover; 964} 965 966.login-suggestion-info { 967 display: flex; 968 flex-direction: column; 969 min-width: 0; 970} 971 972.login-suggestion-name { 973 font-weight: 600; 974 color: var(--text-primary); 975 white-space: nowrap; 976 overflow: hidden; 977 text-overflow: ellipsis; 978} 979 980.login-suggestion-handle { 981 font-size: 0.875rem; 982 color: var(--text-secondary); 983 white-space: nowrap; 984 overflow: hidden; 985 text-overflow: ellipsis; 986} 987 988.login-error { 989 padding: 12px 16px; 990 background: rgba(239, 68, 68, 0.1); 991 border: 1px solid rgba(239, 68, 68, 0.3); 992 border-radius: var(--radius-md); 993 color: #ef4444; 994 font-size: 0.875rem; 995} 996 997.login-legal { 998 font-size: 0.75rem; 999 color: var(--text-tertiary); 1000 line-height: 1.5; 1001 margin-top: 16px; 1002} 1003 1004.profile-header { 1005 display: flex; 1006 align-items: center; 1007 gap: 20px; 1008 margin-bottom: 32px; 1009 padding-bottom: 24px; 1010 border-bottom: 1px solid var(--border); 1011} 1012 1013.profile-avatar { 1014 width: 80px; 1015 height: 80px; 1016 min-width: 80px; 1017 border-radius: var(--radius-full); 1018 background: linear-gradient(135deg, var(--accent), #a855f7); 1019 display: flex; 1020 align-items: center; 1021 justify-content: center; 1022 font-weight: 700; 1023 font-size: 2rem; 1024 color: white; 1025 overflow: hidden; 1026} 1027 1028.profile-avatar img { 1029 width: 100%; 1030 height: 100%; 1031 object-fit: cover; 1032} 1033 1034.profile-avatar-link { 1035 text-decoration: none; 1036} 1037 1038.profile-info { 1039 flex: 1; 1040} 1041 1042.profile-name { 1043 font-size: 1.5rem; 1044 font-weight: 700; 1045} 1046 1047.profile-handle-link { 1048 color: var(--text-secondary); 1049 text-decoration: none; 1050} 1051 1052.profile-handle-link:hover { 1053 color: var(--accent); 1054 text-decoration: underline; 1055} 1056 1057.profile-bluesky-link { 1058 display: inline-flex; 1059 align-items: center; 1060 gap: 6px; 1061 color: #0085ff; 1062 text-decoration: none; 1063 font-size: 0.95rem; 1064 padding: 4px 10px; 1065 border-radius: var(--radius-md); 1066 background: rgba(0, 133, 255, 0.1); 1067 transition: all 0.15s ease; 1068} 1069 1070.profile-bluesky-link:hover { 1071 background: rgba(0, 133, 255, 0.2); 1072 color: #0070dd; 1073} 1074 1075.profile-stats { 1076 display: flex; 1077 gap: 24px; 1078 margin-top: 8px; 1079} 1080 1081.profile-stat { 1082 color: var(--text-secondary); 1083 font-size: 0.9rem; 1084} 1085 1086.profile-stat strong { 1087 color: var(--text-primary); 1088} 1089 1090.profile-tabs { 1091 display: flex; 1092 gap: 0; 1093 margin-bottom: 24px; 1094 border-bottom: 1px solid var(--border); 1095} 1096 1097.profile-tab { 1098 padding: 12px 20px; 1099 font-size: 0.9rem; 1100 font-weight: 500; 1101 color: var(--text-secondary); 1102 background: transparent; 1103 border: none; 1104 border-bottom: 2px solid transparent; 1105 cursor: pointer; 1106 transition: all 0.15s ease; 1107 margin-bottom: -1px; 1108} 1109 1110.profile-tab:hover { 1111 color: var(--text-primary); 1112 background: var(--bg-tertiary); 1113} 1114 1115.profile-tab.active { 1116 color: var(--accent); 1117 border-bottom-color: var(--accent); 1118} 1119 1120.bookmark-description { 1121 font-size: 0.9rem; 1122 color: var(--text-secondary); 1123 margin: 0; 1124 line-height: 1.5; 1125} 1126 1127.bookmark-meta { 1128 display: flex; 1129 align-items: center; 1130 gap: 12px; 1131 margin-top: 12px; 1132 font-size: 0.85rem; 1133 color: var(--text-tertiary); 1134} 1135 1136.bookmark-time { 1137 color: var(--text-tertiary); 1138} 1139 1140.composer { 1141 margin-bottom: 24px; 1142} 1143 1144.composer-textarea { 1145 width: 100%; 1146 min-height: 120px; 1147 padding: 16px; 1148 background: var(--bg-secondary); 1149 border: 1px solid var(--border); 1150 border-radius: var(--radius-md); 1151 color: var(--text-primary); 1152 font-size: 1rem; 1153 resize: vertical; 1154 transition: all 0.15s ease; 1155} 1156 1157.composer-textarea:focus { 1158 outline: none; 1159 border-color: var(--accent); 1160 box-shadow: 0 0 0 3px var(--accent-subtle); 1161} 1162 1163.composer-footer { 1164 display: flex; 1165 justify-content: space-between; 1166 align-items: center; 1167 margin-top: 12px; 1168} 1169 1170.composer-char-count { 1171 font-size: 0.85rem; 1172 color: var(--text-tertiary); 1173} 1174 1175.composer-char-count.warning { 1176 color: var(--warning); 1177} 1178 1179.composer-char-count.error { 1180 color: var(--error); 1181} 1182 1183.composer-add-quote { 1184 width: 100%; 1185 padding: 12px 16px; 1186 margin-bottom: 12px; 1187 background: var(--bg-tertiary); 1188 border: 1px dashed var(--border); 1189 border-radius: var(--radius-md); 1190 color: var(--text-secondary); 1191 font-size: 0.9rem; 1192 cursor: pointer; 1193 transition: all 0.15s ease; 1194} 1195 1196.composer-add-quote:hover { 1197 border-color: var(--accent); 1198 color: var(--accent); 1199 background: var(--accent-subtle); 1200} 1201 1202.composer-quote-input-wrapper { 1203 margin-bottom: 12px; 1204} 1205 1206.composer-quote-input { 1207 width: 100%; 1208 padding: 12px 16px; 1209 background: linear-gradient( 1210 135deg, 1211 rgba(79, 70, 229, 0.05), 1212 rgba(168, 85, 247, 0.05) 1213 ); 1214 border: 1px solid var(--border); 1215 border-left: 3px solid var(--accent); 1216 border-radius: 0 var(--radius-md) var(--radius-md) 0; 1217 color: var(--text-primary); 1218 font-size: 0.95rem; 1219 font-style: italic; 1220 resize: vertical; 1221 font-family: inherit; 1222 transition: all 0.15s ease; 1223} 1224 1225.composer-quote-input:focus { 1226 outline: none; 1227 border-color: var(--accent); 1228} 1229 1230.composer-quote-input::placeholder { 1231 color: var(--text-tertiary); 1232 font-style: italic; 1233} 1234 1235.composer-quote-remove-btn { 1236 margin-top: 8px; 1237 padding: 6px 12px; 1238 background: none; 1239 border: none; 1240 color: var(--text-tertiary); 1241 font-size: 0.85rem; 1242 cursor: pointer; 1243} 1244 1245.composer-quote-remove-btn:hover { 1246 color: var(--error); 1247} 1248 1249@keyframes shimmer { 1250 0% { 1251 background-position: -200% 0; 1252 } 1253 1254 100% { 1255 background-position: 200% 0; 1256 } 1257} 1258 1259.skeleton { 1260 background: linear-gradient( 1261 90deg, 1262 var(--bg-tertiary) 25%, 1263 var(--bg-hover) 50%, 1264 var(--bg-tertiary) 75% 1265 ); 1266 background-size: 200% 100%; 1267 animation: shimmer 1.5s infinite; 1268 border-radius: var(--radius-sm); 1269} 1270 1271.skeleton-text { 1272 height: 1em; 1273 margin-bottom: 8px; 1274} 1275 1276.skeleton-text:last-child { 1277 width: 60%; 1278} 1279 1280@media (max-width: 640px) { 1281 .main-content { 1282 padding: 16px 12px; 1283 } 1284 1285 .navbar-inner { 1286 padding: 0 16px; 1287 } 1288 1289 .page-title { 1290 font-size: 1.5rem; 1291 } 1292 1293 .url-input-container { 1294 flex-direction: column; 1295 } 1296 1297 .profile-header { 1298 flex-direction: column; 1299 text-align: center; 1300 } 1301 1302 .profile-stats { 1303 justify-content: center; 1304 } 1305} 1306 1307.main { 1308 flex: 1; 1309 width: 100%; 1310} 1311 1312.page-container { 1313 max-width: 680px; 1314 margin: 0 auto; 1315 padding: 24px 16px; 1316} 1317 1318.navbar-logo { 1319 width: 32px; 1320 height: 32px; 1321 background: linear-gradient(135deg, var(--accent), #8b5cf6); 1322 border-radius: var(--radius-sm); 1323 display: flex; 1324 align-items: center; 1325 justify-content: center; 1326 font-weight: 700; 1327 font-size: 1rem; 1328 color: white; 1329} 1330 1331.navbar-user { 1332 display: flex; 1333 align-items: center; 1334 gap: 8px; 1335} 1336 1337.navbar-avatar { 1338 width: 36px; 1339 height: 36px; 1340 border-radius: var(--radius-full); 1341 background: linear-gradient(135deg, var(--accent), #a855f7); 1342 display: flex; 1343 align-items: center; 1344 justify-content: center; 1345 font-weight: 600; 1346 font-size: 0.85rem; 1347 color: white; 1348 text-decoration: none; 1349} 1350 1351.btn-sm { 1352 padding: 6px 12px; 1353 font-size: 0.85rem; 1354} 1355 1356.composer-url { 1357 font-size: 0.85rem; 1358 color: var(--text-secondary); 1359 word-break: break-all; 1360} 1361 1362.composer-quote { 1363 position: relative; 1364 padding: 12px 16px; 1365 padding-right: 36px; 1366 background: var(--bg-secondary); 1367 border-left: 3px solid var(--accent); 1368 border-radius: 0 var(--radius-sm) var(--radius-sm) 0; 1369 margin-bottom: 16px; 1370 font-style: italic; 1371 color: var(--text-secondary); 1372} 1373 1374.composer-quote-remove { 1375 position: absolute; 1376 top: 8px; 1377 right: 8px; 1378 width: 24px; 1379 height: 24px; 1380 border-radius: var(--radius-full); 1381 background: var(--bg-tertiary); 1382 color: var(--text-secondary); 1383 font-size: 1rem; 1384 display: flex; 1385 align-items: center; 1386 justify-content: center; 1387} 1388 1389.composer-quote-remove:hover { 1390 background: var(--bg-hover); 1391 color: var(--text-primary); 1392} 1393 1394.composer-input { 1395 width: 100%; 1396 min-height: 120px; 1397 padding: 16px; 1398 background: var(--bg-secondary); 1399 border: 1px solid var(--border); 1400 border-radius: var(--radius-md); 1401 color: var(--text-primary); 1402 font-size: 1rem; 1403 resize: vertical; 1404 transition: all 0.15s ease; 1405} 1406 1407.composer-input:focus { 1408 outline: none; 1409 border-color: var(--accent); 1410 box-shadow: 0 0 0 3px var(--accent-subtle); 1411} 1412 1413.composer-input::placeholder { 1414 color: var(--text-tertiary); 1415} 1416 1417.composer-tags { 1418 margin-top: 12px; 1419} 1420 1421.composer-tags-input { 1422 width: 100%; 1423 padding: 12px 16px; 1424 background: var(--bg-secondary); 1425 border: 1px solid var(--border); 1426 border-radius: var(--radius-md); 1427 color: var(--text-primary); 1428 font-size: 0.95rem; 1429 transition: all 0.15s ease; 1430} 1431 1432.composer-tags-input:focus { 1433 outline: none; 1434 border-color: var(--accent); 1435 box-shadow: 0 0 0 3px var(--accent-subtle); 1436} 1437 1438.composer-tags-input::placeholder { 1439 color: var(--text-tertiary); 1440} 1441 1442.composer-footer { 1443 display: flex; 1444 justify-content: space-between; 1445 align-items: center; 1446 margin-top: 12px; 1447} 1448 1449.composer-count { 1450 font-size: 0.85rem; 1451 color: var(--text-tertiary); 1452} 1453 1454.composer-actions { 1455 display: flex; 1456 gap: 8px; 1457} 1458 1459.composer-error { 1460 margin-top: 12px; 1461 padding: 12px; 1462 background: rgba(239, 68, 68, 0.1); 1463 border: 1px solid rgba(239, 68, 68, 0.3); 1464 border-radius: var(--radius-md); 1465 color: var(--error); 1466 font-size: 0.9rem; 1467} 1468 1469.annotation-tags { 1470 display: flex; 1471 flex-wrap: wrap; 1472 gap: 6px; 1473 margin-top: 12px; 1474 margin-bottom: 8px; 1475} 1476 1477.annotation-tag { 1478 display: inline-flex; 1479 align-items: center; 1480 padding: 4px 10px; 1481 background: var(--bg-tertiary); 1482 color: var(--text-secondary); 1483 font-size: 0.8rem; 1484 font-weight: 500; 1485 border-radius: var(--radius-full); 1486 transition: all 0.15s ease; 1487 border: 1px solid transparent; 1488 text-decoration: none; 1489} 1490 1491.annotation-tag:hover { 1492 background: var(--bg-hover); 1493 color: var(--text-primary); 1494 border-color: var(--border); 1495 transform: translateY(-1px); 1496} 1497 1498.url-input-wrapper { 1499 margin-bottom: 24px; 1500} 1501 1502.url-input { 1503 width: 100%; 1504 padding: 16px; 1505 background: var(--bg-secondary); 1506 border: 1px solid var(--border); 1507 border-radius: var(--radius-md); 1508 color: var(--text-primary); 1509 font-size: 1.1rem; 1510 transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); 1511 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 1512} 1513 1514.url-input:focus { 1515 outline: none; 1516 border-color: var(--accent); 1517 box-shadow: 0 0 0 4px var(--accent-subtle); 1518 background: var(--bg-primary); 1519} 1520 1521.url-input::placeholder { 1522 color: var(--text-tertiary); 1523} 1524 1525.annotation-detail-page { 1526 max-width: 680px; 1527 margin: 0 auto; 1528 padding: 24px 16px; 1529} 1530 1531.annotation-detail-header { 1532 margin-bottom: 24px; 1533} 1534 1535.back-link { 1536 color: var(--text-secondary); 1537 text-decoration: none; 1538 font-size: 0.9rem; 1539} 1540 1541.back-link:hover { 1542 color: var(--accent); 1543} 1544 1545.replies-section { 1546 margin-top: 32px; 1547} 1548 1549.replies-title { 1550 font-size: 1.1rem; 1551 font-weight: 600; 1552 margin-bottom: 16px; 1553 color: var(--text-primary); 1554} 1555 1556.reply-form { 1557 margin-bottom: 24px; 1558} 1559 1560.reply-input { 1561 width: 100%; 1562 padding: 12px; 1563 border: 1px solid var(--border); 1564 border-radius: var(--radius-md); 1565 font-size: 0.95rem; 1566 resize: vertical; 1567 margin-bottom: 12px; 1568 font-family: inherit; 1569} 1570 1571.reply-input:focus { 1572 outline: none; 1573 border-color: var(--accent); 1574 box-shadow: 0 0 0 3px var(--accent-subtle); 1575} 1576 1577.replies-list { 1578 display: flex; 1579 flex-direction: column; 1580 gap: 12px; 1581} 1582 1583.reply-card { 1584 padding: 16px; 1585 background: var(--bg-secondary); 1586 border-radius: var(--radius-md); 1587 border: 1px solid var(--border); 1588} 1589 1590.reply-header { 1591 display: flex; 1592 align-items: center; 1593 gap: 12px; 1594 margin-bottom: 12px; 1595} 1596 1597.reply-avatar-link { 1598 text-decoration: none; 1599} 1600 1601.reply-avatar { 1602 width: 36px; 1603 height: 36px; 1604 min-width: 36px; 1605 border-radius: var(--radius-full); 1606 background: linear-gradient(135deg, var(--accent), #a855f7); 1607 display: flex; 1608 align-items: center; 1609 justify-content: center; 1610 font-weight: 600; 1611 font-size: 0.85rem; 1612 color: white; 1613 overflow: hidden; 1614} 1615 1616.reply-avatar img { 1617 width: 100%; 1618 height: 100%; 1619 object-fit: cover; 1620} 1621 1622.reply-meta { 1623 flex: 1; 1624 min-width: 0; 1625} 1626 1627.reply-author { 1628 font-weight: 600; 1629 color: var(--text-primary); 1630} 1631 1632.reply-handle { 1633 font-size: 0.85rem; 1634 color: var(--text-tertiary); 1635 text-decoration: none; 1636 margin-left: 6px; 1637} 1638 1639.reply-handle:hover { 1640 color: var(--accent); 1641 text-decoration: underline; 1642} 1643 1644.reply-time { 1645 font-size: 0.85rem; 1646 color: var(--text-tertiary); 1647 white-space: nowrap; 1648} 1649 1650.reply-text { 1651 color: var(--text-primary); 1652 line-height: 1.5; 1653 margin: 0; 1654} 1655 1656.replies-title { 1657 display: flex; 1658 align-items: center; 1659 gap: 8px; 1660} 1661 1662.replies-title svg { 1663 color: var(--accent); 1664} 1665 1666.replies-list-threaded { 1667 display: flex; 1668 flex-direction: column; 1669 gap: 8px; 1670} 1671 1672.reply-card-threaded { 1673 padding: 16px; 1674 transition: background 0.15s ease; 1675} 1676 1677.reply-card-threaded .reply-header { 1678 margin-bottom: 8px; 1679} 1680 1681.reply-card-threaded .reply-meta { 1682 display: flex; 1683 align-items: center; 1684 gap: 6px; 1685 flex-wrap: wrap; 1686} 1687 1688.reply-dot { 1689 color: var(--text-tertiary); 1690 font-size: 0.75rem; 1691} 1692 1693.reply-actions { 1694 display: flex; 1695 gap: 4px; 1696 margin-left: auto; 1697} 1698 1699.reply-action-btn { 1700 background: none; 1701 border: none; 1702 padding: 4px 8px; 1703 color: var(--text-tertiary); 1704 cursor: pointer; 1705 border-radius: var(--radius-sm); 1706 transition: all 0.15s ease; 1707 display: flex; 1708 align-items: center; 1709 justify-content: center; 1710} 1711 1712.reply-action-btn:hover { 1713 color: var(--accent); 1714 background: var(--accent-subtle); 1715} 1716 1717.reply-action-delete:hover { 1718 color: var(--error); 1719 background: rgba(239, 68, 68, 0.1); 1720} 1721 1722.replying-to-banner { 1723 display: flex; 1724 align-items: center; 1725 justify-content: space-between; 1726 padding: 8px 12px; 1727 margin-bottom: 12px; 1728 background: var(--accent-subtle); 1729 border-radius: var(--radius-sm); 1730 font-size: 0.85rem; 1731 color: var(--text-secondary); 1732} 1733 1734.cancel-reply { 1735 background: none; 1736 border: none; 1737 font-size: 1.2rem; 1738 color: var(--text-tertiary); 1739 cursor: pointer; 1740 padding: 0 4px; 1741 line-height: 1; 1742} 1743 1744.cancel-reply:hover { 1745 color: var(--text-primary); 1746} 1747 1748.reply-form.card { 1749 padding: 16px; 1750 margin-bottom: 16px; 1751} 1752 1753.reply-form-actions { 1754 display: flex; 1755 justify-content: flex-end; 1756} 1757 1758.inline-replies { 1759 margin-top: 16px; 1760 padding-top: 16px; 1761 border-top: 1px solid var(--border); 1762 display: flex; 1763 flex-direction: column; 1764 gap: 16px; 1765} 1766 1767.main-reply-composer { 1768 margin-top: 16px; 1769 background: var(--bg-secondary); 1770 padding: 12px; 1771 border-radius: var(--radius-md); 1772} 1773 1774.reply-input { 1775 width: 100%; 1776 min-height: 80px; 1777 padding: 12px; 1778 border: 1px solid var(--border); 1779 border-radius: var(--radius-md); 1780 background: var(--bg-card); 1781 color: var(--text-primary); 1782 font-family: inherit; 1783 font-size: 0.95rem; 1784 resize: vertical; 1785 display: block; 1786} 1787 1788.reply-input:focus { 1789 border-color: var(--accent); 1790 outline: none; 1791} 1792 1793.reply-input.small { 1794 min-height: 60px; 1795 font-size: 0.9rem; 1796 margin-bottom: 8px; 1797} 1798 1799.composer-actions { 1800 display: flex; 1801 justify-content: flex-end; 1802} 1803 1804.btn-block { 1805 width: 100%; 1806 text-align: left; 1807 padding: 8px 12px; 1808 color: var(--text-secondary); 1809 background: var(--bg-tertiary); 1810 border-radius: var(--radius-md); 1811 margin-top: 8px; 1812 font-size: 0.9rem; 1813 cursor: pointer; 1814 transition: all 0.2s; 1815} 1816 1817.btn-block:hover { 1818 background: var(--border); 1819 color: var(--text-primary); 1820} 1821 1822.annotation-action.active { 1823 color: var(--accent); 1824} 1825 1826.new-page { 1827 max-width: 600px; 1828 margin: 0 auto; 1829 display: flex; 1830 flex-direction: column; 1831 gap: 32px; 1832} 1833 1834.loading-spinner { 1835 width: 32px; 1836 height: 32px; 1837 border: 3px solid var(--border); 1838 border-top-color: var(--accent); 1839 border-radius: 50%; 1840 animation: spin 0.8s linear infinite; 1841 margin: 60px auto; 1842} 1843 1844@keyframes spin { 1845 to { 1846 transform: rotate(360deg); 1847 } 1848} 1849 1850.navbar { 1851 position: sticky; 1852 top: 0; 1853 z-index: 1000; 1854 background: rgba(12, 10, 20, 0.95); 1855 backdrop-filter: blur(12px); 1856 -webkit-backdrop-filter: blur(12px); 1857 border-bottom: 1px solid var(--border); 1858} 1859 1860.navbar-inner { 1861 max-width: 1200px; 1862 margin: 0 auto; 1863 padding: 12px 24px; 1864 display: flex; 1865 align-items: center; 1866 justify-content: space-between; 1867 gap: 24px; 1868} 1869 1870.navbar-brand { 1871 display: flex; 1872 align-items: center; 1873 gap: 10px; 1874 text-decoration: none; 1875 flex-shrink: 0; 1876} 1877 1878.navbar-logo { 1879 width: 32px; 1880 height: 32px; 1881 background: linear-gradient(135deg, var(--accent), #8b5cf6); 1882 border-radius: 8px; 1883 display: flex; 1884 align-items: center; 1885 justify-content: center; 1886 font-weight: 700; 1887 font-size: 1rem; 1888 color: white; 1889} 1890 1891.navbar-title { 1892 font-weight: 700; 1893 font-size: 1.25rem; 1894 color: var(--text-primary); 1895} 1896 1897.navbar-center { 1898 display: flex; 1899 align-items: center; 1900 gap: 8px; 1901 background: var(--bg-tertiary); 1902 padding: 4px; 1903 border-radius: var(--radius-lg); 1904} 1905 1906.navbar-link { 1907 display: flex; 1908 align-items: center; 1909 gap: 6px; 1910 padding: 8px 16px; 1911 font-size: 0.9rem; 1912 font-weight: 500; 1913 color: var(--text-secondary); 1914 text-decoration: none; 1915 border-radius: var(--radius-md); 1916 transition: all 0.15s ease; 1917} 1918 1919.navbar-link:hover { 1920 color: var(--text-primary); 1921 background: var(--bg-hover); 1922} 1923 1924.navbar-link.active { 1925 color: var(--text-primary); 1926 background: var(--bg-card); 1927 box-shadow: var(--shadow-sm); 1928} 1929 1930.navbar-right { 1931 display: flex; 1932 align-items: center; 1933 gap: 12px; 1934 flex-shrink: 0; 1935} 1936 1937.navbar-icon-link { 1938 display: flex; 1939 align-items: center; 1940 justify-content: center; 1941 width: 36px; 1942 height: 36px; 1943 color: var(--text-tertiary); 1944 border-radius: var(--radius-md); 1945 transition: all 0.15s ease; 1946} 1947 1948.navbar-icon-link:hover { 1949 color: var(--text-primary); 1950 background: var(--bg-tertiary); 1951} 1952 1953.navbar-icon-link.active { 1954 color: var(--accent); 1955 background: var(--accent-subtle); 1956} 1957 1958.navbar-new-btn { 1959 display: flex; 1960 align-items: center; 1961 gap: 6px; 1962 padding: 8px 14px; 1963 background: linear-gradient(135deg, var(--accent), #8b5cf6); 1964 color: white; 1965 font-size: 0.85rem; 1966 font-weight: 600; 1967 text-decoration: none; 1968 border-radius: var(--radius-full); 1969 transition: all 0.2s ease; 1970} 1971 1972.navbar-new-btn:hover { 1973 transform: translateY(-1px); 1974 box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3); 1975 color: white; 1976} 1977 1978.navbar-user-section { 1979 display: flex; 1980 align-items: center; 1981 gap: 4px; 1982} 1983 1984.navbar-avatar { 1985 width: 32px; 1986 height: 32px; 1987 border-radius: var(--radius-full); 1988 background: linear-gradient(135deg, var(--accent), #a855f7); 1989 display: flex; 1990 align-items: center; 1991 justify-content: center; 1992 font-weight: 600; 1993 font-size: 0.75rem; 1994 color: white; 1995 text-decoration: none; 1996 transition: transform 0.15s ease; 1997} 1998 1999.navbar-avatar:hover { 2000 transform: scale(1.05); 2001} 2002 2003.navbar-logout { 2004 width: 24px; 2005 height: 24px; 2006 border: none; 2007 background: transparent; 2008 color: var(--text-tertiary); 2009 font-size: 1.25rem; 2010 cursor: pointer; 2011 border-radius: var(--radius-sm); 2012 transition: all 0.15s ease; 2013 display: flex; 2014 align-items: center; 2015 justify-content: center; 2016} 2017 2018.navbar-logout:hover { 2019 color: var(--error); 2020 background: rgba(239, 68, 68, 0.1); 2021} 2022 2023.navbar-signin { 2024 padding: 8px 16px; 2025 background: var(--accent); 2026 color: white; 2027 font-size: 0.9rem; 2028 font-weight: 500; 2029 text-decoration: none; 2030 border-radius: var(--radius-full); 2031 transition: all 0.15s ease; 2032} 2033 2034.navbar-signin:hover { 2035 background: var(--accent-hover); 2036 color: white; 2037} 2038 2039.navbar-user-menu { 2040 position: relative; 2041} 2042 2043.navbar-avatar-btn { 2044 width: 36px; 2045 height: 36px; 2046 border-radius: var(--radius-full); 2047 background: linear-gradient(135deg, var(--accent), #a855f7); 2048 border: none; 2049 cursor: pointer; 2050 overflow: hidden; 2051 display: flex; 2052 align-items: center; 2053 justify-content: center; 2054 transition: 2055 transform 0.15s ease, 2056 box-shadow 0.15s ease; 2057} 2058 2059.navbar-avatar-btn:hover { 2060 transform: scale(1.05); 2061 box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3); 2062} 2063 2064.navbar-avatar-img { 2065 width: 100%; 2066 height: 100%; 2067 object-fit: cover; 2068} 2069 2070.navbar-avatar-text { 2071 font-weight: 600; 2072 font-size: 0.75rem; 2073 color: white; 2074} 2075 2076.navbar-dropdown { 2077 position: absolute; 2078 top: calc(100% + 8px); 2079 right: 0; 2080 min-width: 200px; 2081 background: var(--bg-card); 2082 border: 1px solid var(--border); 2083 border-radius: var(--radius-lg); 2084 box-shadow: var(--shadow-lg); 2085 overflow: hidden; 2086 z-index: 1001; 2087 animation: dropdownFade 0.15s ease; 2088} 2089 2090@keyframes dropdownFade { 2091 from { 2092 opacity: 0; 2093 transform: translateY(-8px); 2094 } 2095 2096 to { 2097 opacity: 1; 2098 transform: translateY(0); 2099 } 2100} 2101 2102.navbar-dropdown-header { 2103 padding: 12px 16px; 2104 background: var(--bg-secondary); 2105} 2106 2107.navbar-dropdown-name { 2108 display: block; 2109 font-weight: 600; 2110 color: var(--text-primary); 2111 font-size: 0.9rem; 2112} 2113 2114.navbar-dropdown-handle { 2115 display: block; 2116 color: var(--text-tertiary); 2117 font-size: 0.8rem; 2118 margin-top: 2px; 2119} 2120 2121.navbar-dropdown-divider { 2122 height: 1px; 2123 background: var(--border); 2124} 2125 2126.navbar-dropdown-item { 2127 display: flex; 2128 align-items: center; 2129 gap: 10px; 2130 width: 100%; 2131 padding: 12px 16px; 2132 font-size: 0.9rem; 2133 color: var(--text-primary); 2134 text-decoration: none; 2135 background: none; 2136 border: none; 2137 cursor: pointer; 2138 transition: background 0.15s ease; 2139 text-align: left; 2140} 2141 2142.navbar-dropdown-item:hover { 2143 background: var(--bg-tertiary); 2144} 2145 2146.navbar-dropdown-logout { 2147 color: var(--error); 2148 border-top: 1px solid var(--border); 2149} 2150 2151.navbar-dropdown-logout:hover { 2152 background: rgba(239, 68, 68, 0.1); 2153} 2154 2155@media (max-width: 768px) { 2156 .navbar-inner { 2157 padding: 10px 16px; 2158 } 2159 2160 .navbar-title { 2161 display: none; 2162 } 2163 2164 .navbar-center { 2165 display: none; 2166 } 2167 2168 .navbar-new-btn span { 2169 display: none; 2170 } 2171 2172 .navbar-new-btn { 2173 width: 36px; 2174 height: 36px; 2175 padding: 0; 2176 justify-content: center; 2177 } 2178} 2179 2180.collections-list { 2181 display: flex; 2182 flex-direction: column; 2183 gap: 2px; 2184 background: var(--bg-card); 2185 border: 1px solid var(--border); 2186 border-radius: var(--radius-lg); 2187 overflow: hidden; 2188} 2189 2190.collection-row { 2191 display: flex; 2192 align-items: center; 2193 background: var(--bg-card); 2194 transition: background 0.15s ease; 2195} 2196 2197.collection-row:not(:last-child) { 2198 border-bottom: 1px solid var(--border); 2199} 2200 2201.collection-row:hover { 2202 background: var(--bg-secondary); 2203} 2204 2205.collection-row-content { 2206 flex: 1; 2207 display: flex; 2208 align-items: center; 2209 gap: 16px; 2210 padding: 16px 20px; 2211 text-decoration: none; 2212 min-width: 0; 2213} 2214 2215.collection-row-icon { 2216 width: 44px; 2217 height: 44px; 2218 min-width: 44px; 2219 display: flex; 2220 align-items: center; 2221 justify-content: center; 2222 background: linear-gradient( 2223 135deg, 2224 rgba(79, 70, 229, 0.1), 2225 rgba(168, 85, 247, 0.15) 2226 ); 2227 color: var(--accent); 2228 border-radius: var(--radius-md); 2229 transition: all 0.2s ease; 2230} 2231 2232.collection-row:hover .collection-row-icon { 2233 background: linear-gradient( 2234 135deg, 2235 rgba(79, 70, 229, 0.15), 2236 rgba(168, 85, 247, 0.2) 2237 ); 2238 transform: scale(1.05); 2239} 2240 2241.collection-row-info { 2242 flex: 1; 2243 min-width: 0; 2244} 2245 2246.collection-row-name { 2247 font-size: 1rem; 2248 font-weight: 600; 2249 color: var(--text-primary); 2250 margin: 0 0 2px 0; 2251 white-space: nowrap; 2252 overflow: hidden; 2253 text-overflow: ellipsis; 2254} 2255 2256.collection-row:hover .collection-row-name { 2257 color: var(--accent); 2258} 2259 2260.collection-row-desc { 2261 font-size: 0.85rem; 2262 color: var(--text-secondary); 2263 margin: 0; 2264 white-space: nowrap; 2265 overflow: hidden; 2266 text-overflow: ellipsis; 2267} 2268 2269.collection-row-arrow { 2270 color: var(--text-tertiary); 2271 opacity: 0; 2272 transition: all 0.2s ease; 2273} 2274 2275.collection-row:hover .collection-row-arrow { 2276 opacity: 1; 2277 color: var(--accent); 2278 transform: translateX(2px); 2279} 2280 2281.collection-row-edit { 2282 padding: 10px; 2283 margin-right: 12px; 2284 color: var(--text-tertiary); 2285 background: none; 2286 border: none; 2287 border-radius: var(--radius-sm); 2288 cursor: pointer; 2289 opacity: 0; 2290 transition: all 0.15s ease; 2291} 2292 2293.collection-row:hover .collection-row-edit { 2294 opacity: 1; 2295} 2296 2297.collection-row-edit:hover { 2298 color: var(--text-primary); 2299 background: var(--bg-tertiary); 2300} 2301 2302.back-link { 2303 display: inline-flex; 2304 align-items: center; 2305 gap: 6px; 2306 color: var(--text-tertiary); 2307 font-size: 0.9rem; 2308 font-weight: 500; 2309 text-decoration: none; 2310 margin-bottom: 24px; 2311 transition: color 0.15s ease; 2312} 2313 2314.back-link:hover { 2315 color: var(--accent); 2316} 2317 2318.collection-detail-header { 2319 display: flex; 2320 gap: 20px; 2321 padding: 24px; 2322 background: var(--bg-card); 2323 border: 1px solid var(--border); 2324 border-radius: var(--radius-lg); 2325 margin-bottom: 32px; 2326 position: relative; 2327} 2328 2329.collection-detail-icon { 2330 width: 56px; 2331 height: 56px; 2332 min-width: 56px; 2333 display: flex; 2334 align-items: center; 2335 justify-content: center; 2336 background: linear-gradient( 2337 135deg, 2338 rgba(79, 70, 229, 0.1), 2339 rgba(168, 85, 247, 0.1) 2340 ); 2341 color: var(--accent); 2342 border-radius: var(--radius-md); 2343} 2344 2345.collection-detail-info { 2346 flex: 1; 2347 min-width: 0; 2348} 2349 2350.collection-detail-visibility { 2351 display: flex; 2352 align-items: center; 2353 gap: 6px; 2354 font-size: 0.8rem; 2355 font-weight: 600; 2356 color: var(--accent); 2357 text-transform: capitalize; 2358 margin-bottom: 8px; 2359} 2360 2361.collection-detail-title { 2362 font-size: 1.5rem; 2363 font-weight: 700; 2364 color: var(--text-primary); 2365 margin-bottom: 8px; 2366 line-height: 1.3; 2367} 2368 2369.collection-detail-desc { 2370 color: var(--text-secondary); 2371 font-size: 1rem; 2372 line-height: 1.5; 2373 margin-bottom: 12px; 2374 max-width: 600px; 2375} 2376 2377.collection-detail-stats { 2378 display: flex; 2379 align-items: center; 2380 gap: 8px; 2381 font-size: 0.85rem; 2382 color: var(--text-tertiary); 2383} 2384 2385.collection-detail-actions { 2386 position: absolute; 2387 top: 20px; 2388 right: 20px; 2389 display: flex; 2390 align-items: center; 2391 gap: 8px; 2392} 2393 2394.collection-detail-actions .share-menu-container { 2395 display: flex; 2396 align-items: center; 2397} 2398 2399.collection-detail-actions .annotation-action { 2400 padding: 10px; 2401 color: var(--text-tertiary); 2402 background: none; 2403 border: none; 2404 border-radius: var(--radius-sm); 2405 cursor: pointer; 2406 transition: all 0.15s ease; 2407} 2408 2409.collection-detail-actions .annotation-action:hover { 2410 color: var(--accent); 2411 background: var(--bg-tertiary); 2412} 2413 2414.collection-detail-edit, 2415.collection-detail-delete { 2416 padding: 10px; 2417 color: var(--text-tertiary); 2418 background: none; 2419 border: none; 2420 border-radius: var(--radius-sm); 2421 cursor: pointer; 2422 transition: all 0.15s ease; 2423} 2424 2425.collection-detail-edit:hover { 2426 color: var(--accent); 2427 background: var(--bg-tertiary); 2428} 2429 2430.collection-detail-delete:hover { 2431 color: var(--error); 2432 background: rgba(239, 68, 68, 0.1); 2433} 2434 2435.collection-item-wrapper { 2436 position: relative; 2437} 2438 2439.collection-item-remove { 2440 position: absolute; 2441 top: 12px; 2442 left: -40px; 2443 z-index: 10; 2444 padding: 8px; 2445 background: var(--bg-card); 2446 border: 1px solid var(--border); 2447 border-radius: var(--radius-sm); 2448 color: var(--text-tertiary); 2449 cursor: pointer; 2450 opacity: 0; 2451 transition: all 0.15s ease; 2452} 2453 2454.collection-item-wrapper:hover .collection-item-remove { 2455 opacity: 1; 2456} 2457 2458.collection-item-remove:hover { 2459 color: var(--error); 2460 border-color: var(--error); 2461 background: rgba(239, 68, 68, 0.05); 2462} 2463 2464.modal-overlay { 2465 position: fixed; 2466 inset: 0; 2467 background: rgba(0, 0, 0, 0.5); 2468 display: flex; 2469 align-items: center; 2470 justify-content: center; 2471 padding: 16px; 2472 z-index: 50; 2473 animation: fadeIn 0.2s ease-out; 2474} 2475 2476.modal-container { 2477 background: var(--bg-secondary); 2478 border-radius: var(--radius-lg); 2479 width: 100%; 2480 max-width: 28rem; 2481 border: 1px solid var(--border); 2482 box-shadow: var(--shadow-lg); 2483 animation: zoomIn 0.2s ease-out; 2484} 2485 2486.modal-header { 2487 display: flex; 2488 align-items: center; 2489 justify-content: space-between; 2490 padding: 16px; 2491 border-bottom: 1px solid var(--border); 2492} 2493 2494.modal-title { 2495 font-size: 1.25rem; 2496 font-weight: 700; 2497 color: var(--text-primary); 2498} 2499 2500.modal-close-btn { 2501 padding: 8px; 2502 color: var(--text-tertiary); 2503 border-radius: var(--radius-md); 2504 transition: color 0.15s; 2505} 2506 2507.modal-close-btn:hover { 2508 color: var(--text-primary); 2509 background: var(--bg-hover); 2510} 2511 2512.modal-form { 2513 padding: 16px; 2514 display: flex; 2515 flex-direction: column; 2516 gap: 16px; 2517} 2518 2519.icon-picker-tabs { 2520 display: flex; 2521 gap: 4px; 2522 margin-bottom: 12px; 2523} 2524 2525.icon-picker-tab { 2526 flex: 1; 2527 padding: 8px 12px; 2528 background: var(--bg-primary); 2529 border: 1px solid var(--border); 2530 border-radius: var(--radius-md); 2531 color: var(--text-secondary); 2532 font-size: 0.85rem; 2533 font-weight: 500; 2534 cursor: pointer; 2535 transition: all 0.15s ease; 2536} 2537 2538.icon-picker-tab:hover { 2539 background: var(--bg-tertiary); 2540} 2541 2542.icon-picker-tab.active { 2543 background: var(--accent); 2544 border-color: var(--accent); 2545 color: white; 2546} 2547 2548.emoji-picker-wrapper { 2549 display: flex; 2550 flex-direction: column; 2551 gap: 10px; 2552} 2553 2554.emoji-custom-input input { 2555 width: 100%; 2556} 2557 2558.emoji-picker, 2559.icon-picker { 2560 display: flex; 2561 flex-wrap: wrap; 2562 gap: 4px; 2563 max-height: 120px; 2564 overflow-y: auto; 2565 padding: 8px; 2566 background: var(--bg-primary); 2567 border: 1px solid var(--border); 2568 border-radius: var(--radius-md); 2569} 2570 2571.emoji-option, 2572.icon-option { 2573 width: 36px; 2574 height: 36px; 2575 display: flex; 2576 align-items: center; 2577 justify-content: center; 2578 font-size: 1.2rem; 2579 background: transparent; 2580 border: 2px solid transparent; 2581 border-radius: var(--radius-sm); 2582 cursor: pointer; 2583 transition: all 0.15s ease; 2584 color: var(--text-secondary); 2585} 2586 2587.emoji-option:hover, 2588.icon-option:hover { 2589 background: var(--bg-tertiary); 2590 transform: scale(1.1); 2591 color: var(--text-primary); 2592} 2593 2594.emoji-option.selected, 2595.icon-option.selected { 2596 border-color: var(--accent); 2597 background: var(--accent-subtle); 2598 color: var(--accent); 2599} 2600 2601.form-group { 2602 margin-bottom: 0; 2603} 2604 2605.form-label { 2606 display: block; 2607 font-size: 0.875rem; 2608 font-weight: 500; 2609 color: var(--text-secondary); 2610 margin-bottom: 4px; 2611} 2612 2613.form-input, 2614.form-textarea, 2615.form-select { 2616 width: 100%; 2617 padding: 8px 12px; 2618 background: var(--bg-primary); 2619 border: 1px solid var(--border); 2620 border-radius: var(--radius-md); 2621 color: var(--text-primary); 2622 transition: all 0.15s; 2623} 2624 2625.form-input:focus, 2626.form-textarea:focus, 2627.form-select:focus { 2628 outline: none; 2629 border-color: var(--accent); 2630 box-shadow: 0 0 0 2px var(--accent-subtle); 2631} 2632 2633.form-textarea { 2634 resize: none; 2635} 2636 2637.modal-actions { 2638 display: flex; 2639 justify-content: flex-end; 2640 gap: 12px; 2641 padding-top: 8px; 2642} 2643 2644@keyframes fadeIn { 2645 from { 2646 opacity: 0; 2647 } 2648 2649 to { 2650 opacity: 1; 2651 } 2652} 2653 2654@keyframes zoomIn { 2655 from { 2656 opacity: 0; 2657 transform: scale(0.95); 2658 } 2659 2660 to { 2661 opacity: 1; 2662 transform: scale(1); 2663 } 2664} 2665 2666.annotation-detail-page { 2667 max-width: 680px; 2668 margin: 0 auto; 2669 padding: 24px 16px; 2670} 2671 2672.annotation-detail-header { 2673 margin-bottom: 24px; 2674} 2675 2676.back-link { 2677 display: inline-flex; 2678 align-items: center; 2679 gap: 8px; 2680 color: var(--text-secondary); 2681 font-size: 0.9rem; 2682 transition: color 0.15s; 2683} 2684 2685.back-link:hover { 2686 color: var(--text-primary); 2687} 2688 2689.text-secondary { 2690 color: var(--text-secondary); 2691} 2692 2693.text-error { 2694 color: var(--error); 2695} 2696 2697.text-center { 2698 text-align: center; 2699} 2700 2701.flex { 2702 display: flex; 2703} 2704 2705.items-center { 2706 align-items: center; 2707} 2708 2709.justify-center { 2710 justify-content: center; 2711} 2712 2713.justify-end { 2714 justify-content: flex-end; 2715} 2716 2717.gap-2 { 2718 gap: 8px; 2719} 2720 2721.gap-3 { 2722 gap: 12px; 2723} 2724 2725.mt-3 { 2726 margin-top: 12px; 2727} 2728 2729.mb-6 { 2730 margin-bottom: 24px; 2731} 2732 2733.btn-text { 2734 background: none; 2735 border: none; 2736 color: var(--text-secondary); 2737 font-size: 0.9rem; 2738 padding: 8px 12px; 2739 cursor: pointer; 2740 transition: color 0.15s; 2741} 2742 2743.btn-text:hover { 2744 color: var(--text-primary); 2745} 2746 2747.btn-sm { 2748 padding: 6px 12px; 2749 font-size: 0.85rem; 2750} 2751 2752.annotation-edit-btn { 2753 background: none; 2754 border: none; 2755 cursor: pointer; 2756 padding: 6px 8px; 2757 color: var(--text-tertiary); 2758 border-radius: var(--radius-sm); 2759 transition: all 0.15s ease; 2760} 2761 2762.annotation-edit-btn:hover { 2763 color: var(--accent); 2764 background: var(--accent-subtle); 2765} 2766 2767.spinner { 2768 width: 32px; 2769 height: 32px; 2770 border: 3px solid var(--border); 2771 border-top-color: var(--accent); 2772 border-radius: 50%; 2773 animation: spin 0.8s linear infinite; 2774} 2775 2776.spinner-sm { 2777 width: 16px; 2778 height: 16px; 2779 border-width: 2px; 2780} 2781 2782@keyframes spin { 2783 to { 2784 transform: rotate(360deg); 2785 } 2786} 2787 2788.collection-list-item { 2789 width: 100%; 2790 text-align: left; 2791 padding: 12px 16px; 2792 border-radius: var(--radius-md); 2793 background: var(--bg-primary); 2794 border: 1px solid transparent; 2795 color: var(--text-primary); 2796 transition: all 0.15s ease; 2797 display: flex; 2798 align-items: center; 2799 justify-content: space-between; 2800 cursor: pointer; 2801} 2802 2803.collection-list-item:hover { 2804 background: var(--bg-hover); 2805 border-color: var(--border); 2806} 2807 2808.collection-list-item:hover .collection-list-item-icon { 2809 opacity: 1; 2810} 2811 2812.collection-list-item:disabled { 2813 opacity: 0.6; 2814 cursor: not-allowed; 2815} 2816 2817.item-delete-overlay { 2818 position: absolute; 2819 top: 16px; 2820 right: 16px; 2821 z-index: 10; 2822 opacity: 0; 2823 transition: opacity 0.15s ease; 2824} 2825 2826.card:hover .item-delete-overlay, 2827div:hover > .item-delete-overlay { 2828 opacity: 1; 2829} 2830 2831.btn-icon-danger { 2832 padding: 8px; 2833 background: var(--error); 2834 color: white; 2835 border: none; 2836 border-radius: var(--radius-md); 2837 cursor: pointer; 2838 box-shadow: var(--shadow-md); 2839 transition: all 0.15s ease; 2840 display: flex; 2841 align-items: center; 2842 justify-content: center; 2843} 2844 2845.btn-icon-danger:hover { 2846 background: #dc2626; 2847 transform: scale(1.05); 2848} 2849 2850.action-buttons { 2851 display: flex; 2852 gap: 8px; 2853} 2854 2855.action-buttons-end { 2856 display: flex; 2857 justify-content: flex-end; 2858 gap: 8px; 2859} 2860 2861.filter-tab { 2862 padding: 8px 16px; 2863 font-size: 0.9rem; 2864 font-weight: 500; 2865 color: var(--text-secondary); 2866 background: transparent; 2867 border: none; 2868 border-radius: var(--radius-md); 2869 cursor: pointer; 2870 transition: all 0.15s ease; 2871} 2872 2873.filter-tab:hover { 2874 color: var(--text-primary); 2875 background: var(--bg-hover); 2876} 2877 2878.filter-tab.active { 2879 color: var(--text-primary); 2880 background: var(--bg-card); 2881 box-shadow: var(--shadow-sm); 2882} 2883 2884.inline-reply { 2885 padding: 12px 16px; 2886 border-bottom: 1px solid var(--border); 2887} 2888 2889.inline-reply:last-child { 2890 border-bottom: none; 2891} 2892 2893.inline-reply-avatar { 2894 width: 28px; 2895 height: 28px; 2896 min-width: 28px; 2897 border-radius: var(--radius-full); 2898 background: linear-gradient(135deg, var(--accent), #a855f7); 2899 display: flex; 2900 align-items: center; 2901 justify-content: center; 2902 font-weight: 600; 2903 font-size: 0.7rem; 2904 color: white; 2905 overflow: hidden; 2906} 2907 2908.inline-reply-avatar img, 2909.inline-reply-avatar-placeholder { 2910 width: 100%; 2911 height: 100%; 2912 object-fit: cover; 2913} 2914 2915.inline-reply-avatar-placeholder { 2916 display: flex; 2917 align-items: center; 2918 justify-content: center; 2919 font-weight: 600; 2920 font-size: 0.7rem; 2921 color: white; 2922} 2923 2924.inline-reply-content { 2925 flex: 1; 2926 min-width: 0; 2927} 2928 2929.inline-reply-header { 2930 display: flex; 2931 align-items: center; 2932 gap: 8px; 2933 margin-bottom: 4px; 2934} 2935 2936.inline-reply-author { 2937 font-weight: 600; 2938 font-size: 0.85rem; 2939 color: var(--text-primary); 2940} 2941 2942.inline-reply-handle { 2943 color: var(--text-tertiary); 2944 font-size: 0.8rem; 2945 text-decoration: none; 2946} 2947 2948.inline-reply-time { 2949 color: var(--text-tertiary); 2950 font-size: 0.75rem; 2951 margin-left: auto; 2952} 2953 2954.inline-reply-text { 2955 font-size: 0.9rem; 2956 color: var(--text-primary); 2957 line-height: 1.5; 2958} 2959 2960.inline-reply-action { 2961 display: flex; 2962 align-items: center; 2963 gap: 4px; 2964 padding: 4px 8px; 2965 font-size: 0.8rem; 2966 color: var(--text-tertiary); 2967 background: none; 2968 border: none; 2969 border-radius: var(--radius-sm); 2970 cursor: pointer; 2971 transition: all 0.15s ease; 2972} 2973 2974.inline-reply-action:hover { 2975 color: var(--text-secondary); 2976 background: var(--bg-hover); 2977} 2978 2979.inline-reply-composer { 2980 display: flex; 2981 align-items: flex-start; 2982 gap: 12px; 2983 padding: 12px 16px; 2984} 2985 2986.history-panel { 2987 background: var(--bg-tertiary); 2988 border: 1px solid var(--border); 2989 border-radius: var(--radius-md); 2990 padding: 1rem; 2991 margin-bottom: 1rem; 2992 font-size: 0.9rem; 2993 animation: fadeIn 0.2s ease-out; 2994} 2995 2996.history-header { 2997 display: flex; 2998 justify-content: space-between; 2999 align-items: center; 3000 margin-bottom: 1rem; 3001 padding-bottom: 0.5rem; 3002 border-bottom: 1px solid var(--border); 3003} 3004 3005.history-title { 3006 font-weight: 600; 3007 text-transform: uppercase; 3008 letter-spacing: 0.05em; 3009 font-size: 0.75rem; 3010 color: var(--text-secondary); 3011} 3012 3013.history-list { 3014 list-style: none; 3015 display: flex; 3016 flex-direction: column; 3017 gap: 1rem; 3018} 3019 3020.history-item { 3021 position: relative; 3022 padding-left: 1rem; 3023 border-left: 2px solid var(--border); 3024} 3025 3026.history-date { 3027 font-size: 0.75rem; 3028 color: var(--text-tertiary); 3029 margin-bottom: 0.25rem; 3030} 3031 3032.history-content { 3033 color: var(--text-secondary); 3034 white-space: pre-wrap; 3035} 3036 3037.history-close-btn { 3038 color: var(--text-tertiary); 3039 padding: 4px; 3040 border-radius: var(--radius-sm); 3041 transition: all 0.2s; 3042 display: flex; 3043 align-items: center; 3044 justify-content: center; 3045} 3046 3047.history-close-btn:hover { 3048 background: var(--bg-hover); 3049 color: var(--text-primary); 3050} 3051 3052.history-status { 3053 text-align: center; 3054 color: var(--text-tertiary); 3055 font-style: italic; 3056 padding: 1rem; 3057} 3058 3059.form-label { 3060 display: block; 3061 font-size: 0.85rem; 3062 font-weight: 600; 3063 color: var(--text-secondary); 3064 margin-bottom: 6px; 3065} 3066 3067.color-input-container { 3068 display: flex; 3069 align-items: center; 3070 gap: 12px; 3071 background: var(--bg-tertiary); 3072 padding: 8px 12px; 3073 border-radius: var(--radius-md); 3074 border: 1px solid var(--border); 3075 width: fit-content; 3076} 3077 3078.color-input-wrapper { 3079 position: relative; 3080 width: 32px; 3081 height: 32px; 3082 border-radius: var(--radius-full); 3083 overflow: hidden; 3084 border: 2px solid var(--border); 3085 cursor: pointer; 3086 transition: transform 0.1s; 3087} 3088 3089.color-input-wrapper:hover { 3090 transform: scale(1.1); 3091 border-color: var(--accent); 3092} 3093 3094.color-input-wrapper input[type="color"] { 3095 position: absolute; 3096 top: -50%; 3097 left: -50%; 3098 width: 200%; 3099 height: 200%; 3100 padding: 0; 3101 margin: 0; 3102 border: none; 3103 cursor: pointer; 3104 opacity: 0; 3105} 3106 3107.bookmark-card { 3108 display: flex; 3109 flex-direction: column; 3110 gap: 16px; 3111} 3112 3113.bookmark-preview { 3114 display: flex; 3115 flex-direction: column; 3116 background: var(--bg-secondary); 3117 border: 1px solid var(--border); 3118 border-radius: var(--radius-md); 3119 overflow: hidden; 3120 text-decoration: none; 3121 transition: all 0.2s ease; 3122 position: relative; 3123} 3124 3125.bookmark-preview:hover { 3126 border-color: var(--accent); 3127 box-shadow: var(--shadow-sm); 3128 transform: translateY(-1px); 3129} 3130 3131.bookmark-preview::before { 3132 content: ""; 3133 position: absolute; 3134 left: 0; 3135 top: 0; 3136 bottom: 0; 3137 width: 4px; 3138 background: var(--accent); 3139 opacity: 0.7; 3140} 3141 3142.bookmark-preview-content { 3143 padding: 16px 20px; 3144 display: flex; 3145 flex-direction: column; 3146 gap: 8px; 3147} 3148 3149.bookmark-preview-header { 3150 display: flex; 3151 align-items: center; 3152 gap: 8px; 3153 margin-bottom: 4px; 3154} 3155 3156.bookmark-preview-site { 3157 font-size: 0.75rem; 3158 color: var(--accent); 3159 text-transform: uppercase; 3160 letter-spacing: 0.05em; 3161 font-weight: 700; 3162 display: flex; 3163 align-items: center; 3164 gap: 6px; 3165} 3166 3167.bookmark-preview-title { 3168 font-size: 1.15rem; 3169 font-weight: 700; 3170 color: var(--text-primary); 3171 line-height: 1.4; 3172} 3173 3174.bookmark-preview-desc { 3175 font-size: 0.95rem; 3176 color: var(--text-secondary); 3177 line-height: 1.6; 3178} 3179 3180.bookmark-preview-arrow { 3181 display: none; 3182} 3183 3184.bookmark-preview:hover { 3185 background: var(--bg-tertiary); 3186 border-color: var(--accent-subtle); 3187 transform: translateY(-1px); 3188} 3189 3190.bookmark-preview-content { 3191 flex: 1; 3192 min-width: 0; 3193 display: flex; 3194 flex-direction: column; 3195 gap: 6px; 3196} 3197 3198.bookmark-preview-site { 3199 display: flex; 3200 align-items: center; 3201 gap: 6px; 3202 font-size: 0.75rem; 3203 font-weight: 600; 3204 color: var(--accent); 3205 text-transform: uppercase; 3206 letter-spacing: 0.03em; 3207} 3208 3209.bookmark-preview-title { 3210 font-size: 1rem; 3211 font-weight: 600; 3212 line-height: 1.4; 3213 color: var(--text-primary); 3214 margin: 0; 3215 display: -webkit-box; 3216 -webkit-line-clamp: 2; 3217 line-clamp: 2; 3218 -webkit-box-orient: vertical; 3219 overflow: hidden; 3220} 3221 3222.bookmark-preview-desc { 3223 font-size: 0.875rem; 3224 color: var(--text-secondary); 3225 line-height: 1.5; 3226 margin: 0; 3227 display: -webkit-box; 3228 -webkit-line-clamp: 2; 3229 line-clamp: 2; 3230 -webkit-box-orient: vertical; 3231 overflow: hidden; 3232} 3233 3234.bookmark-preview-arrow { 3235 display: flex; 3236 align-items: center; 3237 justify-content: center; 3238 color: var(--text-tertiary); 3239 padding: 0 4px; 3240 transition: all 0.2s ease; 3241} 3242 3243.bookmark-preview:hover .bookmark-preview-arrow { 3244 color: var(--accent); 3245 transform: translateX(2px); 3246} 3247 3248.navbar-logo-img { 3249 width: 24px; 3250 height: 24px; 3251 object-fit: contain; 3252} 3253 3254.login-logo-img { 3255 width: 80px; 3256 height: 80px; 3257 margin-bottom: 24px; 3258 object-fit: contain; 3259} 3260 3261.legal-content { 3262 max-width: 800px; 3263 margin: 0 auto; 3264 padding: 20px; 3265} 3266 3267.legal-content h1 { 3268 font-size: 2rem; 3269 margin-bottom: 8px; 3270 color: var(--text-primary); 3271} 3272 3273.legal-content h2 { 3274 font-size: 1.4rem; 3275 margin-top: 32px; 3276 margin-bottom: 12px; 3277 color: var(--text-primary); 3278} 3279 3280.legal-content h3 { 3281 font-size: 1.1rem; 3282 margin-top: 20px; 3283 margin-bottom: 8px; 3284 color: var(--text-primary); 3285} 3286 3287.legal-content p { 3288 color: var(--text-secondary); 3289 line-height: 1.7; 3290 margin-bottom: 12px; 3291} 3292 3293.legal-content ul { 3294 color: var(--text-secondary); 3295 line-height: 1.7; 3296 margin-left: 24px; 3297 margin-bottom: 12px; 3298} 3299 3300.legal-content li { 3301 margin-bottom: 6px; 3302} 3303 3304.legal-content a { 3305 color: var(--accent); 3306 text-decoration: none; 3307} 3308 3309.legal-content a:hover { 3310 text-decoration: underline; 3311} 3312 3313.legal-content section { 3314 margin-bottom: 24px; 3315} 3316 3317.input { 3318 width: 100%; 3319 padding: 12px 14px; 3320 font-size: 0.95rem; 3321 color: var(--text-primary); 3322 background: var(--bg-secondary); 3323 border: 1px solid var(--border); 3324 border-radius: var(--radius-md); 3325 outline: none; 3326 transition: all 0.15s ease; 3327} 3328 3329.input:focus { 3330 border-color: var(--accent); 3331 box-shadow: 0 0 0 3px var(--accent-subtle); 3332} 3333 3334.input::placeholder { 3335 color: var(--text-tertiary); 3336} 3337 3338.notifications-page { 3339 max-width: 680px; 3340 margin: 0 auto; 3341} 3342 3343.notifications-list { 3344 display: flex; 3345 flex-direction: column; 3346 gap: 12px; 3347} 3348 3349.notification-item { 3350 display: flex; 3351 gap: 16px; 3352 align-items: flex-start; 3353 text-decoration: none; 3354 color: inherit; 3355} 3356 3357.notification-item:hover { 3358 background: var(--bg-hover); 3359} 3360 3361.notification-icon { 3362 width: 36px; 3363 height: 36px; 3364 border-radius: var(--radius-full); 3365 display: flex; 3366 align-items: center; 3367 justify-content: center; 3368 background: var(--bg-tertiary); 3369 color: var(--text-secondary); 3370 flex-shrink: 0; 3371} 3372 3373.notification-icon[data-type="like"] { 3374 color: #ef4444; 3375 background: rgba(239, 68, 68, 0.1); 3376} 3377 3378.notification-icon[data-type="reply"] { 3379 color: #3b82f6; 3380 background: rgba(59, 130, 246, 0.1); 3381} 3382 3383.notification-content { 3384 flex: 1; 3385 min-width: 0; 3386} 3387 3388.notification-text { 3389 font-size: 0.95rem; 3390 margin-bottom: 4px; 3391 line-height: 1.4; 3392 color: var(--text-primary); 3393} 3394 3395.notification-text strong { 3396 font-weight: 600; 3397} 3398 3399.notification-time { 3400 font-size: 0.85rem; 3401 color: var(--text-tertiary); 3402} 3403 3404.notification-link { 3405 position: relative; 3406} 3407 3408.notification-badge { 3409 position: absolute; 3410 top: -2px; 3411 right: -2px; 3412 background: var(--error); 3413 color: white; 3414 font-size: 0.7rem; 3415 font-weight: 700; 3416 min-width: 16px; 3417 height: 16px; 3418 border-radius: var(--radius-full); 3419 display: flex; 3420 align-items: center; 3421 justify-content: center; 3422 padding: 0 4px; 3423 border: 2px solid var(--bg-primary); 3424}