Various AT Protocol integrations with obsidian
at main 1610 lines 31 kB view raw
1/* Atmosphere View */ 2.atmosphere-view { 3 padding: 20px; 4} 5 6.atmosphere-header { 7 margin-bottom: 24px; 8 padding-bottom: 16px; 9 border-bottom: 1px solid var(--background-modifier-border); 10} 11 12.atmosphere-header-top-row { 13 display: flex; 14 align-items: center; 15 gap: 12px; 16 margin-bottom: 12px; 17} 18 19.atmosphere-source-selector { 20 display: flex; 21 align-items: center; 22 justify-content: center; 23 gap: 0; 24 flex: 1; 25 border-bottom: 1px solid var(--background-modifier-border); 26 position: relative; 27} 28 29.atmosphere-source-option { 30 display: flex; 31 align-items: center; 32 justify-content: center; 33 gap: 4px; 34 padding: 10px 20px; 35 cursor: pointer; 36 user-select: none; 37 border: none; 38 background: transparent; 39 transition: all 0.15s ease; 40 position: relative; 41 margin-bottom: -1px; 42} 43 44.atmosphere-source-option::after { 45 content: ""; 46 position: absolute; 47 bottom: 0; 48 left: 0; 49 right: 0; 50 height: 2px; 51 background: transparent; 52 transition: background 0.15s ease; 53} 54 55.atmosphere-source-option:hover { 56 background: var(--background-modifier-hover); 57} 58 59.atmosphere-source-option:has(input:checked)::after { 60 background: var(--interactive-accent); 61} 62 63.atmosphere-source-option:has(input:checked) .atmosphere-source-text { 64 color: var(--interactive-accent); 65 font-weight: var(--font-semibold); 66} 67 68.atmosphere-source-toggle { 69 display: none; 70} 71 72.atmosphere-source-text { 73 font-size: var(--font-ui-small); 74 font-weight: var(--font-medium); 75 color: var(--text-muted); 76} 77 78.atmosphere-refresh-btn { 79 background: transparent; 80 border: none; 81 color: var(--text-muted); 82 cursor: pointer; 83 padding: 4px; 84 display: flex; 85 align-items: center; 86 opacity: 0.6; 87 transition: opacity 0.15s ease; 88} 89 90.atmosphere-refresh-btn:hover { 91 opacity: 1; 92} 93 94.atmosphere-refresh-btn-spinning { 95 animation: atmosphere-spin 0.6s linear infinite; 96} 97 98@keyframes atmosphere-spin { 99 from { transform: rotate(0deg); } 100 to { transform: rotate(360deg); } 101} 102 103.atmosphere-filters { 104 display: flex; 105 flex-direction: column; 106 gap: 8px; 107 margin-bottom: 16px; 108 container-type: inline-size; 109} 110 111.atmosphere-filter-toolbar { 112 display: flex; 113 align-items: center; 114 gap: 8px; 115 flex-wrap: wrap; 116} 117 118.atmosphere-filter-btn-group { 119 display: inline-flex; 120 align-items: center; 121 gap: 2px; 122} 123 124.atmosphere-active-chips-row { 125 display: flex; 126 flex-wrap: wrap; 127 gap: 6px; 128} 129 130 131 132.atmosphere-filter-title { 133 margin: 0; 134 font-size: var(--font-smallest); 135 font-weight: var(--font-semibold); 136 color: var(--text-faint); 137 text-transform: uppercase; 138 letter-spacing: 0.05em; 139} 140 141.atmosphere-filter-create-btn { 142 display: flex; 143 align-items: center; 144 justify-content: center; 145 width: 22px; 146 height: 22px; 147 padding: 0; 148 background: transparent; 149 border: none; 150 border-radius: var(--radius-s); 151 cursor: pointer; 152 color: var(--text-muted); 153 transition: all 0.15s ease; 154} 155 156.atmosphere-filter-create-btn:hover { 157 background: var(--background-modifier-hover); 158 color: var(--interactive-accent); 159} 160 161.atmosphere-filter-create-btn svg { 162 width: 16px; 163 height: 16px; 164} 165 166.atmosphere-filter-picker-btn { 167 display: inline-flex; 168 align-items: center; 169 gap: 5px; 170 height: 26px; 171 padding: 0 6px 0 4px; 172 background: transparent; 173 border: none; 174 border-radius: var(--radius-s); 175 cursor: pointer; 176 color: var(--text-faint); 177 opacity: 0.7; 178 transition: all 0.15s ease; 179} 180 181.atmosphere-filter-picker-btn:hover { 182 background: var(--background-modifier-hover); 183 color: var(--interactive-accent); 184 opacity: 1; 185} 186 187.atmosphere-filter-picker-btn svg { 188 width: 15px; 189 height: 15px; 190} 191 192.atmosphere-filter-active-chips { 193 display: flex; 194 flex-wrap: wrap; 195 gap: 6px; 196 margin-top: 4px; 197} 198 199.atmosphere-chip-removable { 200 display: inline-flex; 201 align-items: center; 202 gap: 4px; 203 padding: 2px 4px 2px 8px; 204 font-size: var(--font-smallest); 205} 206 207.atmosphere-chip-remove-btn { 208 display: flex; 209 align-items: center; 210 justify-content: center; 211 width: 14px; 212 height: 14px; 213 flex-shrink: 0; 214 padding: 0; 215 border: none; 216 background: transparent; 217 cursor: pointer; 218 color: currentColor; 219 opacity: 0.6; 220 border-radius: 2px; 221 line-height: 1; 222} 223 224.atmosphere-chip-remove-btn:hover { 225 opacity: 1; 226} 227 228.atmosphere-chip-remove-btn svg { 229 width: 10px; 230 height: 10px; 231 display: block; 232} 233 234.atmosphere-filter-chips { 235 display: flex; 236 flex-wrap: wrap; 237 gap: 6px; 238 align-items: center; 239} 240 241.atmosphere-chip { 242 padding: 3px 10px; 243 border-radius: var(--radius-m); 244 border: 1px solid var(--background-modifier-border); 245 background: transparent; 246 color: var(--text-muted); 247 font-size: var(--font-smallest); 248 font-weight: var(--font-medium); 249 cursor: pointer; 250 transition: all 0.12s ease; 251 white-space: nowrap; 252} 253 254.atmosphere-chip:hover { 255 border-color: var(--background-modifier-border-hover); 256 color: var(--text-normal); 257} 258 259.atmosphere-chip-active { 260 background: color-mix(in srgb, var(--interactive-accent) 12%, transparent); 261 border-color: color-mix(in srgb, var(--interactive-accent) 50%, transparent); 262 color: var(--interactive-accent); 263 font-weight: var(--font-semibold); 264} 265 266.atmosphere-chip-active:hover { 267 background: color-mix(in srgb, var(--interactive-accent) 20%, transparent); 268 border-color: var(--interactive-accent); 269} 270 271.atmosphere-grid { 272 display: grid; 273 grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); 274 gap: 16px; 275 padding: 8px 0; 276} 277 278.atmosphere-item { 279 background: var(--background-secondary); 280 border: 1px solid var(--background-modifier-border); 281 border-radius: var(--radius-m); 282 padding: 16px; 283 display: flex; 284 flex-direction: column; 285 transition: box-shadow 0.15s ease, border-color 0.15s ease; 286 cursor: pointer; 287} 288 289.atmosphere-item:hover { 290 box-shadow: var(--shadow-s); 291 border-color: var(--background-modifier-border-hover); 292} 293 294.atmosphere-item-header { 295 display: flex; 296 justify-content: space-between; 297 align-items: flex-start; 298 gap: 8px; 299} 300 301 302.atmosphere-item-source-icon svg, 303.atmosphere-badge svg { 304 width: 14px; 305 height: 14px; 306} 307 308.atmosphere-item-edit-btn { 309 display: flex; 310 align-items: center; 311 justify-content: center; 312 width: 24px; 313 height: 24px; 314 padding: 0; 315 margin-left: auto; 316 background: transparent; 317 border: none; 318 border-radius: var(--radius-s); 319 cursor: pointer; 320 color: var(--text-faint); 321 opacity: 0.6; 322 transition: all 0.15s ease; 323} 324 325.atmosphere-item:hover .atmosphere-item-edit-btn { 326 opacity: 1; 327} 328 329.atmosphere-item-edit-btn:hover { 330 background: var(--background-modifier-hover); 331 color: var(--text-normal); 332 opacity: 1; 333} 334 335.atmosphere-item-edit-btn svg { 336 width: 14px; 337 height: 14px; 338} 339 340.atmosphere-badge { 341 display: flex; 342 align-items: center; 343 flex-shrink: 0; 344} 345 346 347.atmosphere-badge-semble { 348 color: var(--color-orange); 349} 350 351.atmosphere-badge-bookmark { 352 color: var(--color-cyan); 353} 354 355.atmosphere-badge-margin { 356 color: #2563eb; 357} 358 359.atmosphere-item-footer { 360 display: grid; 361 grid-template-columns: 1fr auto 1fr; 362 align-items: center; 363 font-size: var(--font-smallest); 364 color: var(--text-faint); 365 margin-top: auto; 366 padding-top: 8px; 367 border-top: 1px solid var(--background-modifier-border); 368} 369 370.atmosphere-item-footer-left { 371 display: flex; 372 align-items: center; 373 gap: 5px; 374} 375 376.atmosphere-item-footer-center { 377 display: flex; 378 justify-content: center; 379} 380 381.atmosphere-item-footer-right { 382 display: flex; 383 justify-content: flex-end; 384} 385 386.atmosphere-date { 387 font-size: var(--font-smallest); 388 color: var(--text-faint); 389} 390 391.atmosphere-error { 392 color: var(--text-error); 393} 394 395 396/* Item Content (shared between sources) */ 397.atmosphere-item-content { 398 display: flex; 399 flex-direction: column; 400 gap: 12px; 401} 402 403.atmosphere-item-title { 404 font-weight: var(--font-semibold); 405 font-size: 1em; 406 color: var(--text-normal); 407 display: -webkit-box; 408 -webkit-line-clamp: 2; 409 -webkit-box-orient: vertical; 410 overflow: hidden; 411 line-height: 1.4; 412 margin-bottom: 4px; 413} 414 415.atmosphere-item-image { 416 width: 100%; 417 max-height: 120px; 418 object-fit: cover; 419 border-radius: var(--radius-s); 420} 421 422.atmosphere-item-desc { 423 color: var(--text-muted); 424 font-size: var(--font-small); 425 margin: 0; 426 display: -webkit-box; 427 -webkit-line-clamp: 2; 428 -webkit-box-orient: vertical; 429 overflow: hidden; 430 line-height: 1.5; 431} 432 433.atmosphere-item-site { 434 font-size: var(--font-smallest); 435 color: var(--text-faint); 436 margin-bottom: 2px; 437} 438 439.atmosphere-item-url { 440 font-size: var(--font-smallest); 441 color: var(--text-accent); 442 text-decoration: none; 443 word-break: break-all; 444 display: -webkit-box; 445 -webkit-line-clamp: 1; 446 -webkit-box-orient: vertical; 447 overflow: hidden; 448} 449 450.atmosphere-item-url:hover { 451 text-decoration: underline; 452} 453 454.atmosphere-item-tags { 455 display: flex; 456 flex-wrap: wrap; 457 gap: 6px; 458 margin-bottom: 8px; 459} 460 461.atmosphere-tag { 462 font-size: var(--font-smallest); 463 padding: 2px 8px; 464 border-radius: var(--radius-s); 465 background: var(--background-modifier-border); 466 color: var(--text-muted); 467 border: 1px solid var(--background-modifier-border-hover); 468} 469 470.atmosphere-item-collections { 471 display: flex; 472 flex-wrap: wrap; 473 gap: 6px; 474 margin-bottom: 8px; 475} 476 477.atmosphere-collection { 478 display: inline-flex; 479 align-items: center; 480 gap: 4px; 481 font-size: var(--font-smallest); 482 padding: 2px 8px; 483 border-radius: var(--radius-s); 484 background: color-mix(in srgb, var(--interactive-accent) 10%, transparent); 485 color: var(--interactive-accent); 486 border: 1px solid color-mix(in srgb, var(--interactive-accent) 30%, transparent); 487} 488 489.atmosphere-collection-source-icon { 490 display: flex; 491 align-items: center; 492 flex-shrink: 0; 493} 494 495.atmosphere-collection-source-icon svg { 496 width: 10px; 497 height: 10px; 498} 499 500.atmosphere-item-collections-section { 501 margin-top: 20px; 502 padding-top: 20px; 503 border-top: 1px solid var(--background-modifier-border); 504} 505 506.atmosphere-item-tags-section { 507 margin-top: 20px; 508 padding-top: 20px; 509 border-top: 1px solid var(--background-modifier-border); 510} 511 512/* Note indicator for cards with attached notes */ 513.atmosphere-note-indicator { 514 display: flex; 515 align-items: center; 516 gap: 4px; 517 font-size: var(--font-smallest); 518 color: var(--text-muted); 519} 520 521.atmosphere-note-icon { 522 display: flex; 523 align-items: center; 524 color: var(--text-muted); 525} 526 527.atmosphere-note-icon svg { 528 width: 12px; 529 height: 12px; 530} 531 532.atmosphere-note-count { 533 font-size: var(--font-smallest); 534} 535 536.atmosphere-collection-indicator { 537 display: flex; 538 align-items: center; 539 gap: 4px; 540 font-size: var(--font-smallest); 541 color: var(--text-muted); 542} 543 544.atmosphere-collection-indicator-icon { 545 display: flex; 546 align-items: center; 547 color: var(--text-muted); 548} 549 550.atmosphere-collection-indicator-icon svg { 551 width: 12px; 552 height: 12px; 553} 554 555.atmosphere-collection-indicator-name { 556 font-size: var(--font-smallest); 557} 558 559/* Detail Modal (shared between sources) */ 560.atmosphere-detail-body { 561 display: flex; 562 flex-direction: column; 563 gap: 16px; 564} 565 566.atmosphere-detail-title { 567 margin: 0; 568 font-size: var(--h2-size); 569 font-weight: var(--font-semibold); 570 color: var(--text-normal); 571 line-height: 1.3; 572} 573 574.atmosphere-detail-image { 575 max-width: 100%; 576 max-height: 200px; 577 object-fit: contain; 578 border-radius: var(--radius-m); 579} 580 581.atmosphere-detail-description { 582 margin: 0; 583 color: var(--text-normal); 584 line-height: var(--line-height-normal); 585} 586 587.atmosphere-detail-meta { 588 display: grid; 589 grid-template-columns: repeat(2, 1fr); 590 gap: 12px; 591 padding: 16px; 592 background: var(--background-secondary); 593 border-radius: var(--radius-m); 594} 595 596.atmosphere-detail-meta-item { 597 display: flex; 598 flex-direction: column; 599 gap: 2px; 600} 601 602.atmosphere-detail-meta-label { 603 font-size: var(--font-smallest); 604 color: var(--text-faint); 605 text-transform: uppercase; 606 letter-spacing: 0.5px; 607} 608 609.atmosphere-detail-meta-value { 610 font-size: var(--font-small); 611 color: var(--text-normal); 612} 613 614.atmosphere-detail-link-wrapper { 615 padding-top: 8px; 616} 617 618.atmosphere-detail-link { 619 font-size: var(--font-small); 620 color: var(--text-accent); 621 text-decoration: none; 622 word-break: break-all; 623} 624 625.atmosphere-detail-link:hover { 626 text-decoration: underline; 627} 628 629.atmosphere-detail-section-title { 630 margin: 0 0 12px 0; 631 font-size: var(--font-small); 632 font-weight: var(--font-semibold); 633 color: var(--text-muted); 634 text-transform: uppercase; 635 letter-spacing: 0.5px; 636} 637 638/* Modals and Forms (shared) */ 639.atmosphere-modal { 640 padding: 16px; 641} 642 643.atmosphere-modal h2 { 644 margin: 0 0 16px 0; 645 font-size: var(--h2-size); 646 font-weight: var(--font-semibold); 647 color: var(--text-normal); 648} 649 650.atmosphere-source-toggle-row { 651 display: flex; 652 gap: 6px; 653 margin-bottom: 16px; 654} 655 656.atmosphere-source-toggle-btn { 657 flex: 1; 658 padding: 6px 12px; 659 background: var(--background-modifier-hover); 660 border: 1px solid var(--background-modifier-border); 661 border-radius: var(--radius-s); 662 color: var(--text-muted); 663 font-size: var(--font-ui-small); 664 font-weight: var(--font-medium); 665 cursor: pointer; 666 transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease; 667} 668 669.atmosphere-source-toggle-btn:hover { 670 background: var(--background-modifier-border); 671 color: var(--text-normal); 672} 673 674.atmosphere-source-toggle-btn.is-active { 675 background: color-mix(in srgb, var(--interactive-accent) 12%, transparent); 676 border-color: color-mix(in srgb, var(--interactive-accent) 50%, transparent); 677 color: var(--interactive-accent); 678 font-weight: var(--font-semibold); 679} 680 681.atmosphere-form { 682 display: flex; 683 flex-direction: column; 684 gap: 16px; 685} 686 687.atmosphere-form-group { 688 display: flex; 689 flex-direction: column; 690 gap: 6px; 691} 692 693.atmosphere-form-group label { 694 font-size: var(--font-small); 695 font-weight: var(--font-medium); 696 color: var(--text-normal); 697} 698 699.atmosphere-input, 700.atmosphere-textarea { 701 padding: 8px 12px; 702 background: var(--background-primary); 703 border: 1px solid var(--background-modifier-border); 704 border-radius: var(--radius-s); 705 color: var(--text-normal); 706 font-size: var(--font-ui-medium); 707 font-family: inherit; 708 transition: border-color 0.15s ease; 709} 710 711.atmosphere-input:focus, 712.atmosphere-textarea:focus { 713 outline: none; 714 border-color: var(--interactive-accent); 715 box-shadow: 0 0 0 2px var(--background-modifier-border-focus); 716} 717 718.atmosphere-input::placeholder, 719.atmosphere-textarea::placeholder { 720 color: var(--text-faint); 721} 722 723.atmosphere-textarea { 724 resize: vertical; 725 min-height: 60px; 726} 727 728.atmosphere-modal-actions { 729 display: flex; 730 align-items: center; 731 gap: 8px; 732 padding-top: 16px; 733 border-top: 1px solid var(--background-modifier-border); 734} 735 736.atmosphere-spacer { 737 flex: 1; 738} 739 740.atmosphere-btn { 741 padding: 8px 16px; 742 border-radius: var(--radius-s); 743 font-size: var(--font-small); 744 font-weight: var(--font-medium); 745 cursor: pointer; 746 transition: all 0.15s ease; 747} 748 749.atmosphere-btn:disabled { 750 opacity: 0.5; 751 cursor: not-allowed; 752} 753 754.atmosphere-btn-secondary { 755 background: var(--background-secondary); 756 border: 1px solid var(--background-modifier-border); 757 color: var(--text-normal); 758} 759 760.atmosphere-btn-secondary:hover:not(:disabled) { 761 background: var(--background-modifier-hover); 762} 763 764.atmosphere-btn-primary { 765 background: var(--interactive-accent); 766 border: 1px solid var(--interactive-accent); 767 color: var(--text-on-accent); 768} 769 770.atmosphere-btn-primary:hover:not(:disabled) { 771 background: var(--interactive-accent-hover); 772} 773 774.atmosphere-btn-danger { 775 background: color-mix(in srgb, var(--color-red) 15%, transparent); 776 border: none; 777 color: var(--color-red); 778} 779 780.atmosphere-btn-danger:hover:not(:disabled) { 781 background: color-mix(in srgb, var(--color-red) 25%, transparent); 782} 783 784.atmosphere-warning-text { 785 color: var(--text-muted); 786 margin-bottom: 16px; 787} 788 789.atmosphere-tags-container { 790 display: flex; 791 flex-direction: column; 792 gap: 8px; 793 margin-bottom: 8px; 794} 795 796.atmosphere-tag-row { 797 display: flex; 798 align-items: center; 799 gap: 8px; 800} 801 802.atmosphere-tag-row .atmosphere-input { 803 flex: 1; 804} 805 806.atmosphere-tag-remove-btn { 807 width: 32px; 808 height: 32px; 809 padding: 0; 810 font-size: 20px; 811 line-height: 1; 812 flex-shrink: 0; 813} 814 815 816.atmosphere-collection-list { 817 display: flex; 818 flex-direction: column; 819 gap: 8px; 820 max-height: 200px; 821 overflow-y: auto; 822} 823 824.atmosphere-collection-item { 825 display: flex; 826 align-items: center; 827 gap: 12px; 828 padding: 10px 12px; 829 background: var(--background-secondary); 830 border: 1px solid var(--background-modifier-border); 831 border-radius: var(--radius-m); 832 cursor: pointer; 833 transition: all 0.15s ease; 834} 835 836.atmosphere-collection-item:hover { 837 background: var(--background-modifier-hover); 838 border-color: var(--background-modifier-border-hover); 839} 840 841.atmosphere-collection-checkbox { 842 width: 18px; 843 height: 18px; 844 margin: 0; 845 cursor: pointer; 846 accent-color: var(--interactive-accent); 847} 848 849.atmosphere-collection-item-info { 850 display: flex; 851 flex-direction: column; 852 gap: 2px; 853 flex: 1; 854} 855 856.atmosphere-collection-item-name { 857 font-weight: var(--font-medium); 858 color: var(--text-normal); 859} 860 861.atmosphere-collection-item-desc { 862 font-size: var(--font-small); 863 color: var(--text-muted); 864} 865 866.atmosphere-tag-list { 867 display: flex; 868 flex-wrap: wrap; 869 gap: 6px; 870 margin-bottom: 8px; 871} 872 873.atmosphere-tag-item { 874 display: flex; 875 align-items: center; 876 padding: 4px 12px; 877 background: var(--background-modifier-border); 878 border-radius: var(--radius-m); 879 cursor: pointer; 880 transition: all 0.15s ease; 881 font-size: var(--font-small); 882 color: var(--text-muted); 883} 884 885.atmosphere-tag-item:hover { 886 background: var(--background-modifier-border-hover); 887 color: var(--text-normal); 888} 889 890.atmosphere-tag-item:has(input:checked) { 891 background: var(--interactive-accent); 892 color: var(--text-on-accent); 893} 894 895.atmosphere-tag-item input { 896 display: none; 897} 898 899/* Semble-specific styles (for NOTE cards and attached notes) */ 900.atmosphere-semble-card-note { 901 margin: 0; 902 padding: 8px 12px; 903 background: var(--background-primary); 904 border-left: 3px solid var(--color-accent); 905 border-radius: var(--radius-s); 906 font-size: var(--font-small); 907 font-style: italic; 908 color: var(--text-muted); 909 white-space: pre-wrap; 910 line-height: var(--line-height-normal); 911} 912 913.atmosphere-semble-card-text { 914 margin: 0; 915 line-height: 1.5; 916 color: var(--text-normal); 917 display: -webkit-box; 918 -webkit-line-clamp: 5; 919 -webkit-box-orient: vertical; 920 overflow: hidden; 921} 922 923.atmosphere-semble-detail-text { 924 margin: 0; 925 white-space: pre-wrap; 926 line-height: var(--line-height-normal); 927 color: var(--text-normal); 928 font-size: 1.1em; 929} 930 931.atmosphere-detail-collections { 932 display: flex; 933 flex-direction: column; 934 gap: 8px; 935 margin: 16px 0; 936 padding: 12px 16px; 937 background: var(--background-secondary); 938 border: 1px solid var(--background-modifier-border); 939 border-radius: var(--radius-m); 940} 941 942.atmosphere-detail-collections-label { 943 font-size: var(--font-smallest); 944 font-weight: var(--font-semibold); 945 color: var(--text-muted); 946 text-transform: uppercase; 947 letter-spacing: 0.06em; 948} 949 950.atmosphere-detail-collections-badges { 951 display: flex; 952 flex-wrap: wrap; 953 gap: 6px; 954} 955 956.atmosphere-semble-detail-notes-section { 957 margin-top: 20px; 958 padding-top: 20px; 959 border-top: 1px solid var(--background-modifier-border); 960} 961 962.atmosphere-semble-detail-note { 963 display: flex; 964 align-items: flex-start; 965 justify-content: space-between; 966 gap: 12px; 967 padding: 12px 16px; 968 background: var(--background-secondary); 969 border-left: 3px solid var(--color-accent); 970 border-radius: var(--radius-s); 971 margin-bottom: 8px; 972} 973 974.atmosphere-semble-detail-note-content { 975 display: flex; 976 gap: 12px; 977 flex: 1; 978 min-width: 0; 979} 980 981.atmosphere-semble-detail-note-icon { 982 flex-shrink: 0; 983 color: var(--color-accent); 984} 985 986.atmosphere-semble-detail-note-icon svg { 987 width: 16px; 988 height: 16px; 989} 990 991.atmosphere-semble-detail-note-text { 992 margin: 0; 993 color: var(--text-normal); 994 line-height: var(--line-height-normal); 995 white-space: pre-wrap; 996} 997 998/* Card type badges */ 999.atmosphere-semble-badge-note { 1000 background: var(--color-accent); 1001 color: var(--text-on-accent); 1002} 1003 1004.atmosphere-semble-badge-url { 1005 background: color-mix(in srgb, var(--color-purple) 80%, var(--background-primary)); 1006 color: var(--text-on-accent); 1007} 1008 1009 1010.atmosphere-semble-badge-semble { 1011 background: color-mix(in srgb, var(--color-green) 80%, var(--background-primary)); 1012 color: var(--text-on-accent); 1013} 1014 1015/* Profile Icon */ 1016.atmosphere-profile-icon { 1017 display: flex; 1018 align-items: center; 1019 gap: 6px; 1020 padding: 10px 12px; 1021 margin-bottom: -1px; 1022 margin-left: auto; 1023 position: absolute; 1024 right: 0; 1025 background: transparent; 1026 transition: background 0.15s ease; 1027} 1028 1029.atmosphere-profile-icon:hover { 1030 background: var(--background-modifier-hover); 1031} 1032 1033.atmosphere-avatar-btn { 1034 display: flex; 1035 align-items: center; 1036 justify-content: center; 1037 width: 24px; 1038 height: 24px; 1039 padding: 0; 1040 background: var(--background-secondary); 1041 border: 1px solid var(--background-modifier-border); 1042 border-radius: 50%; 1043 cursor: pointer; 1044 overflow: hidden; 1045 transition: opacity 0.15s ease; 1046} 1047 1048.atmosphere-avatar-btn:hover { 1049 opacity: 0.8; 1050} 1051 1052.atmosphere-avatar-img { 1053 width: 100%; 1054 height: 100%; 1055 object-fit: cover; 1056 border-radius: 50%; 1057} 1058 1059.atmosphere-avatar-initials { 1060 font-size: var(--font-smallest); 1061 font-weight: var(--font-semibold); 1062 color: var(--text-muted); 1063} 1064 1065.atmosphere-avatar-placeholder { 1066 display: flex; 1067 align-items: center; 1068 justify-content: center; 1069 width: 24px; 1070 height: 24px; 1071 background: var(--background-secondary); 1072 border: 1px solid var(--background-modifier-border); 1073 border-radius: 50%; 1074 color: var(--text-faint); 1075 font-size: var(--font-smallest); 1076} 1077 1078.atmosphere-profile-info { 1079 display: flex; 1080 flex-direction: column; 1081 align-items: flex-end; 1082 gap: 1px; 1083} 1084 1085.atmosphere-profile-name { 1086 font-size: var(--font-ui-small); 1087 font-weight: var(--font-medium); 1088 color: var(--text-muted); 1089 line-height: 1.2; 1090} 1091 1092.atmosphere-profile-handle { 1093 font-size: var(--font-smallest); 1094 color: var(--text-faint); 1095 line-height: 1.2; 1096} 1097 1098/* Generic Card Detail Modal (used for all sources) */ 1099.atmosphere-detail-modal { 1100 padding: 20px; 1101 max-width: 600px; 1102} 1103 1104 1105.atmosphere-detail-footer { 1106 display: flex; 1107 align-items: center; 1108 justify-content: space-between; 1109 margin-top: 20px; 1110 padding-top: 16px; 1111 border-top: 1px solid var(--background-modifier-border); 1112} 1113 1114.atmosphere-detail-footer-left { 1115 display: flex; 1116 align-items: center; 1117 gap: 6px; 1118} 1119 1120.atmosphere-detail-edit-btn { 1121 display: flex; 1122 align-items: center; 1123 justify-content: center; 1124 width: 28px; 1125 height: 28px; 1126 padding: 0; 1127 background: transparent; 1128 border: none; 1129 border-radius: 4px; 1130 color: var(--text-accent); 1131 cursor: pointer; 1132 opacity: 0.6; 1133 transition: opacity 0.15s ease; 1134} 1135 1136.atmosphere-detail-edit-btn:hover { 1137 opacity: 1; 1138} 1139 1140.atmosphere-detail-edit-btn svg { 1141 width: 16px; 1142 height: 16px; 1143} 1144 1145.atmosphere-detail-date { 1146 font-size: var(--font-small); 1147 color: var(--text-faint); 1148} 1149 1150/* Semble-specific Add Note Form */ 1151.atmosphere-semble-detail-add-note { 1152 margin-top: 20px; 1153 padding-top: 20px; 1154 border-top: 1px solid var(--background-modifier-border); 1155} 1156 1157.atmosphere-semble-add-note-form { 1158 display: flex; 1159 flex-direction: column; 1160 gap: 12px; 1161} 1162 1163.atmosphere-semble-note-input { 1164 min-height: 80px; 1165 resize: vertical; 1166} 1167 1168.atmosphere-semble-note-delete-btn { 1169 display: flex; 1170 align-items: center; 1171 justify-content: center; 1172 width: 28px; 1173 height: 28px; 1174 padding: 0; 1175 flex-shrink: 0; 1176 background: transparent; 1177 border: none; 1178 border-radius: var(--radius-s); 1179 cursor: pointer; 1180 color: var(--text-faint); 1181 opacity: 0.6; 1182 transition: all 0.15s ease; 1183} 1184 1185.atmosphere-semble-note-delete-btn:hover { 1186 background: color-mix(in srgb, var(--color-red) 15%, transparent); 1187 color: var(--color-red); 1188 opacity: 1; 1189} 1190 1191.atmosphere-semble-note-delete-btn svg { 1192 width: 14px; 1193 height: 14px; 1194} 1195 1196/* Responsive styles */ 1197@media (max-width: 600px) { 1198 .atmosphere-view { 1199 padding: 12px; 1200 } 1201 1202 .atmosphere-header { 1203 margin-bottom: 16px; 1204 padding-bottom: 12px; 1205 } 1206 1207 .atmosphere-profile-icon { 1208 display: none; 1209 } 1210 1211 .atmosphere-source-option { 1212 padding: 8px 16px; 1213 font-size: var(--font-ui-small); 1214 } 1215 1216 .atmosphere-source-text { 1217 font-size: var(--font-ui-small); 1218 } 1219 1220 .atmosphere-source-selector { 1221 justify-content: center; 1222 } 1223 1224 .atmosphere-grid { 1225 grid-template-columns: 1fr; 1226 gap: 12px; 1227 } 1228 1229 .standard-site-list { 1230 grid-template-columns: 1fr; 1231 gap: 12px; 1232 } 1233 1234 .atmosphere-filter-toolbar { 1235 flex-wrap: wrap; 1236 gap: 6px; 1237 } 1238} 1239 1240/* Hide profile in narrow sidebar widths (but not mobile) */ 1241@media (max-width: 400px) { 1242 .atmosphere-profile-icon { 1243 display: none; 1244 } 1245} 1246 1247.is-mobile .atmosphere-profile-icon { 1248 display: none; 1249} 1250 1251.is-mobile .atmosphere-source-option { 1252 padding: 8px 16px; 1253 font-size: var(--font-ui-small); 1254} 1255 1256.is-mobile .atmosphere-source-text { 1257 font-size: var(--font-ui-small); 1258} 1259 1260.is-mobile .atmosphere-source-selector { 1261 justify-content: center; 1262} 1263 1264/* Standard Site View */ 1265.standard-site-view { 1266 padding: 20px; 1267} 1268 1269.standard-site-header { 1270 display: flex; 1271 align-items: center; 1272 justify-content: space-between; 1273 margin-bottom: 24px; 1274 padding-bottom: 16px; 1275 border-bottom: 1px solid var(--background-modifier-border); 1276} 1277 1278.standard-site-header h2 { 1279 margin: 0; 1280 font-size: var(--h2-size); 1281 font-weight: var(--font-semibold); 1282 color: var(--text-normal); 1283} 1284 1285.standard-site-create-btn { 1286 display: flex; 1287 align-items: center; 1288 justify-content: center; 1289 padding: 8px 16px; 1290 gap: 6px; 1291 background: var(--interactive-accent); 1292 border: none; 1293 border-radius: var(--radius-s); 1294 cursor: pointer; 1295 color: var(--text-on-accent); 1296 font-weight: var(--font-medium); 1297 transition: all 0.15s ease; 1298} 1299 1300.standard-site-create-btn:hover { 1301 background: var(--interactive-accent-hover); 1302} 1303 1304.standard-site-create-btn svg { 1305 width: 16px; 1306 height: 16px; 1307} 1308 1309.standard-site-list { 1310 display: grid; 1311 grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); 1312 gap: 16px; 1313 padding: 8px 0; 1314} 1315 1316.standard-site-publication { 1317 background: var(--background-secondary); 1318 border: 1px solid var(--background-modifier-border); 1319 border-radius: var(--radius-m); 1320 padding: 16px; 1321 display: flex; 1322 flex-direction: column; 1323 transition: box-shadow 0.15s ease, border-color 0.15s ease; 1324} 1325 1326.standard-site-publication.clickable { 1327 cursor: pointer; 1328} 1329 1330.standard-site-publication:hover { 1331 box-shadow: var(--shadow-s); 1332 border-color: var(--background-modifier-border-hover); 1333} 1334 1335.standard-site-publication-header { 1336 display: flex; 1337 align-items: center; 1338 justify-content: space-between; 1339 gap: 12px; 1340 margin-bottom: 12px; 1341} 1342 1343.standard-site-publication-name { 1344 margin: 0; 1345 font-size: var(--h3-size); 1346 font-weight: var(--font-semibold); 1347 color: var(--text-normal); 1348 flex: 1; 1349} 1350 1351.standard-site-publication-actions { 1352 display: flex; 1353 gap: 6px; 1354} 1355 1356.standard-site-action-btn { 1357 display: flex; 1358 align-items: center; 1359 justify-content: center; 1360 width: 32px; 1361 height: 32px; 1362 padding: 0; 1363 background: transparent; 1364 border: none; 1365 border-radius: var(--radius-s); 1366 cursor: pointer; 1367 color: var(--text-faint); 1368 transition: all 0.15s ease; 1369} 1370 1371.standard-site-action-btn:hover { 1372 background: var(--background-modifier-hover); 1373 color: var(--text-normal); 1374} 1375 1376.standard-site-action-btn svg { 1377 width: 16px; 1378 height: 16px; 1379} 1380 1381.standard-site-publication-body { 1382 display: flex; 1383 flex-direction: column; 1384 gap: 12px; 1385} 1386 1387.standard-site-publication-url { 1388 display: flex; 1389 align-items: center; 1390 gap: 6px; 1391} 1392 1393.standard-site-publication-url a { 1394 color: var(--text-accent); 1395 text-decoration: none; 1396 font-size: var(--font-small); 1397} 1398 1399.standard-site-publication-url a:hover { 1400 text-decoration: underline; 1401} 1402 1403.standard-site-publication-description { 1404 margin: 0; 1405 color: var(--text-muted); 1406 line-height: var(--line-height-normal); 1407 font-size: var(--font-small); 1408} 1409 1410.standard-site-publication-footer { 1411 display: flex; 1412 flex-wrap: wrap; 1413 gap: 12px; 1414 align-items: center; 1415 margin-top: 12px; 1416 padding-top: 12px; 1417 border-top: 1px solid var(--background-modifier-border); 1418} 1419 1420.standard-site-publication-uri { 1421 display: flex; 1422 align-items: center; 1423 gap: 4px; 1424 font-size: var(--font-smallest); 1425 color: var(--text-faint); 1426} 1427 1428.standard-site-label { 1429 font-weight: var(--font-medium); 1430} 1431 1432.standard-site-publication-uri code { 1433 font-size: var(--font-smallest); 1434 background: var(--background-primary); 1435 padding: 2px 6px; 1436 border-radius: var(--radius-s); 1437 color: var(--text-muted); 1438} 1439 1440.standard-site-badge { 1441 font-size: var(--font-smallest); 1442 padding: 3px 8px; 1443 border-radius: var(--radius-s); 1444 background: color-mix(in srgb, var(--color-orange) 15%, transparent); 1445 color: var(--color-orange); 1446 border: 1px solid color-mix(in srgb, var(--color-orange) 30%, transparent); 1447 font-weight: var(--font-medium); 1448} 1449 1450.standard-site-error { 1451 color: var(--text-error); 1452} 1453 1454/* Standard Site Documents */ 1455.standard-site-document { 1456 background: var(--background-secondary); 1457 border: 1px solid var(--background-modifier-border); 1458 border-radius: var(--radius-m); 1459 padding: 16px; 1460 display: flex; 1461 flex-direction: column; 1462 transition: box-shadow 0.15s ease, border-color 0.15s ease; 1463} 1464 1465.standard-site-document:hover { 1466 box-shadow: var(--shadow-s); 1467 border-color: var(--background-modifier-border-hover); 1468} 1469 1470.standard-site-document-header { 1471 display: flex; 1472 align-items: flex-start; 1473 justify-content: space-between; 1474 gap: 8px; 1475 margin-bottom: 8px; 1476} 1477 1478.standard-site-document-title { 1479 margin: 0; 1480 font-size: var(--h3-size); 1481 font-weight: var(--font-semibold); 1482 color: var(--text-normal); 1483 flex: 1; 1484 line-height: 1.3; 1485} 1486 1487.standard-site-document-external { 1488 display: flex; 1489 align-items: center; 1490 justify-content: center; 1491 flex-shrink: 0; 1492 width: 24px; 1493 height: 24px; 1494 border-radius: var(--radius-s); 1495 color: var(--text-faint); 1496 transition: all 0.15s ease; 1497} 1498 1499.standard-site-document-external:hover { 1500 background: var(--background-modifier-hover); 1501 color: var(--text-normal); 1502} 1503 1504.standard-site-document-external svg { 1505 width: 14px; 1506 height: 14px; 1507} 1508 1509.standard-site-document-body { 1510 display: flex; 1511 flex-direction: column; 1512 gap: 8px; 1513} 1514 1515.standard-site-document-description { 1516 margin: 0; 1517 color: var(--text-muted); 1518 font-size: var(--font-small); 1519 line-height: var(--line-height-normal); 1520 display: -webkit-box; 1521 -webkit-line-clamp: 3; 1522 -webkit-box-orient: vertical; 1523 overflow: hidden; 1524} 1525 1526.standard-site-document-tags { 1527 display: flex; 1528 flex-wrap: wrap; 1529 gap: 6px; 1530} 1531 1532.standard-site-document-tag { 1533 font-size: var(--font-smallest); 1534 padding: 2px 8px; 1535 border-radius: var(--radius-s); 1536 background: var(--background-modifier-border); 1537 color: var(--text-muted); 1538 border: 1px solid var(--background-modifier-border-hover); 1539} 1540 1541.standard-site-document-footer { 1542 display: flex; 1543 align-items: center; 1544 margin-top: 12px; 1545 padding-top: 8px; 1546 border-top: 1px solid var(--background-modifier-border); 1547} 1548 1549.standard-site-document-date { 1550 font-size: var(--font-smallest); 1551 color: var(--text-faint); 1552} 1553 1554.standard-site-title-group { 1555 display: flex; 1556 flex-direction: column; 1557 flex: 1; 1558 min-width: 0; 1559} 1560 1561.standard-site-author-handle { 1562 font-size: var(--font-small); 1563 color: var(--text-muted); 1564} 1565 1566.standard-site-back { 1567 font-size: var(--font-small); 1568 color: var(--text-muted); 1569 padding: 4px 8px; 1570 border-radius: var(--radius-s); 1571 transition: all 0.15s ease; 1572} 1573 1574.standard-site-back:hover { 1575 background: var(--background-modifier-hover); 1576 color: var(--text-normal); 1577} 1578 1579.standard-site-publication-external { 1580 display: flex; 1581 align-items: center; 1582 justify-content: center; 1583 flex-shrink: 0; 1584 width: 24px; 1585 height: 24px; 1586 border-radius: var(--radius-s); 1587 color: var(--text-faint); 1588 transition: all 0.15s ease; 1589} 1590 1591.standard-site-publication-external:hover { 1592 background: var(--background-modifier-hover); 1593 color: var(--text-normal); 1594} 1595 1596.standard-site-publication-external svg { 1597 width: 14px; 1598 height: 14px; 1599} 1600 1601.atmosphere-filter-toolbar .search-input-container { 1602 width: 160px; 1603 margin-left: auto; 1604} 1605 1606@container (max-width: 380px) { 1607 .atmosphere-filter-toolbar .search-input-container { 1608 margin: 0 auto; 1609 } 1610}