Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
at 92fc8b21b443c2bb257fbced7ca5b8ab46037f62 749 lines 13 kB view raw
1.legal-content { 2 max-width: 800px; 3 margin: 0 auto; 4 padding: 20px; 5} 6 7.legal-content h1 { 8 font-size: 2rem; 9 margin-bottom: 8px; 10 color: var(--text-primary); 11} 12 13.legal-content h2 { 14 font-size: 1.4rem; 15 margin-top: 32px; 16 margin-bottom: 12px; 17 color: var(--text-primary); 18} 19 20.legal-content h3 { 21 font-size: 1.1rem; 22 margin-top: 20px; 23 margin-bottom: 8px; 24 color: var(--text-primary); 25} 26 27.legal-content p { 28 color: var(--text-secondary); 29 line-height: 1.7; 30 margin-bottom: 12px; 31} 32 33.legal-content ul { 34 color: var(--text-secondary); 35 line-height: 1.7; 36 margin-left: 24px; 37 margin-bottom: 12px; 38} 39 40.legal-content li { 41 margin-bottom: 6px; 42} 43 44.legal-content a { 45 color: var(--accent); 46 text-decoration: none; 47} 48 49.legal-content a:hover { 50 text-decoration: underline; 51} 52 53.legal-content section { 54 margin-bottom: 24px; 55} 56 57.text-secondary { 58 color: var(--text-secondary); 59} 60 61.text-error { 62 color: var(--error); 63} 64 65.text-center { 66 text-align: center; 67} 68 69.flex { 70 display: flex; 71} 72 73.items-center { 74 align-items: center; 75} 76 77.justify-center { 78 justify-content: center; 79} 80 81.justify-end { 82 justify-content: flex-end; 83} 84 85.gap-2 { 86 gap: 8px; 87} 88 89.gap-3 { 90 gap: 12px; 91} 92 93.mt-3 { 94 margin-top: 12px; 95} 96 97.mb-6 { 98 margin-bottom: 24px; 99} 100 101.composer { 102 margin-bottom: 24px; 103} 104 105.composer-header { 106 display: flex; 107 justify-content: space-between; 108 align-items: center; 109 margin-bottom: 12px; 110} 111 112.composer-title { 113 font-size: 1.1rem; 114 font-weight: 600; 115 color: var(--text-primary); 116 margin: 0; 117} 118 119.composer-input { 120 width: 100%; 121 min-height: 120px; 122 padding: 16px; 123 background: var(--bg-secondary); 124 border: 1px solid var(--border); 125 border-radius: var(--radius-md); 126 color: var(--text-primary); 127 font-size: 1rem; 128 resize: vertical; 129 transition: all 0.15s ease; 130} 131 132.composer-input:focus { 133 outline: none; 134 border-color: var(--accent); 135 box-shadow: 0 0 0 3px var(--accent-subtle); 136} 137 138.composer-footer { 139 display: flex; 140 justify-content: space-between; 141 align-items: center; 142 margin-top: 12px; 143} 144 145.composer-actions { 146 display: flex; 147 justify-content: flex-end; 148 gap: 8px; 149} 150 151.composer-count { 152 font-size: 0.85rem; 153 color: var(--text-tertiary); 154} 155 156.composer-count.warning { 157 color: var(--warning); 158} 159 160.composer-count.error { 161 color: var(--error); 162} 163 164.composer-char-count.warning { 165 color: var(--warning); 166} 167 168.composer-char-count.error { 169 color: var(--error); 170} 171 172.composer-add-quote { 173 width: 100%; 174 padding: 12px 16px; 175 margin-bottom: 12px; 176 background: var(--bg-tertiary); 177 border: 1px dashed var(--border); 178 border-radius: var(--radius-md); 179 color: var(--text-secondary); 180 font-size: 0.9rem; 181 cursor: pointer; 182 transition: all 0.15s ease; 183} 184 185.composer-add-quote:hover { 186 border-color: var(--accent); 187 color: var(--accent); 188 background: var(--accent-subtle); 189} 190 191.composer-quote-input-wrapper { 192 margin-bottom: 12px; 193} 194 195.composer-quote-input { 196 width: 100%; 197 padding: 12px 16px; 198 background: linear-gradient( 199 135deg, 200 rgba(79, 70, 229, 0.05), 201 rgba(168, 85, 247, 0.05) 202 ); 203 border: 1px solid var(--border); 204 border-left: 3px solid var(--accent); 205 border-radius: 0 var(--radius-md) var(--radius-md) 0; 206 color: var(--text-primary); 207 font-size: 0.95rem; 208 font-style: italic; 209 resize: vertical; 210 font-family: inherit; 211 transition: all 0.15s ease; 212} 213 214.composer-quote-input:focus { 215 outline: none; 216 border-color: var(--accent); 217} 218 219.composer-quote-input::placeholder { 220 color: var(--text-tertiary); 221 font-style: italic; 222} 223 224.composer-quote-remove-btn { 225 margin-top: 8px; 226 padding: 6px 12px; 227 background: none; 228 border: none; 229 color: var(--text-tertiary); 230 font-size: 0.85rem; 231 cursor: pointer; 232} 233 234.composer-quote-remove-btn:hover { 235 color: var(--error); 236} 237 238.composer-error { 239 margin-top: 12px; 240 padding: 12px; 241 background: rgba(239, 68, 68, 0.1); 242 border: 1px solid rgba(239, 68, 68, 0.3); 243 border-radius: var(--radius-md); 244 color: var(--error); 245 font-size: 0.9rem; 246} 247 248.composer-url { 249 font-size: 0.85rem; 250 color: var(--text-secondary); 251 word-break: break-all; 252} 253 254.composer-quote { 255 position: relative; 256 padding: 12px 16px; 257 padding-right: 36px; 258 background: var(--bg-secondary); 259 border-left: 3px solid var(--accent); 260 border-radius: 0 var(--radius-sm) var(--radius-sm) 0; 261 margin-bottom: 16px; 262 font-style: italic; 263 color: var(--text-secondary); 264 overflow-wrap: break-word; 265 word-break: break-word; 266 max-width: 100%; 267} 268 269.composer-quote-remove { 270 position: absolute; 271 top: 8px; 272 right: 8px; 273 width: 24px; 274 height: 24px; 275 border-radius: var(--radius-full); 276 background: var(--bg-tertiary); 277 color: var(--text-secondary); 278 font-size: 1rem; 279 display: flex; 280 align-items: center; 281 justify-content: center; 282} 283 284.composer-quote-remove:hover { 285 background: var(--bg-hover); 286 color: var(--text-primary); 287} 288 289.composer-tags { 290 flex: 1; 291} 292 293.composer-meta-row { 294 display: flex; 295 gap: 12px; 296 margin-top: 12px; 297 align-items: flex-start; 298} 299 300.composer-labels-wrapper { 301 position: relative; 302} 303 304.composer-labels-btn { 305 display: flex; 306 align-items: center; 307 justify-content: center; 308 width: 42px; 309 height: 42px; 310 background: var(--bg-secondary); 311 border: 1px solid var(--border); 312 border-radius: var(--radius-md); 313 cursor: pointer; 314 color: var(--text-tertiary); 315 transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); 316 position: relative; 317} 318 319.composer-labels-btn:hover { 320 color: var(--text-primary); 321 background: var(--bg-hover); 322 border-color: var(--text-tertiary); 323} 324 325.composer-labels-btn.active { 326 color: var(--accent); 327 background: var(--accent-subtle); 328 border-color: var(--accent); 329} 330 331.composer-labels-badge { 332 position: absolute; 333 top: -4px; 334 right: -4px; 335 background: var(--error); 336 color: white; 337 font-size: 0.7rem; 338 width: 18px; 339 height: 18px; 340 border-radius: 50%; 341 display: flex; 342 align-items: center; 343 justify-content: center; 344 font-weight: bold; 345 border: 2px solid var(--bg-primary); 346 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); 347} 348 349.composer-labels-picker { 350 position: absolute; 351 bottom: 100%; 352 right: 0; 353 margin-bottom: 12px; 354 background: var(--bg-elevated); 355 border: 1px solid var(--border); 356 border-radius: var(--radius-md); 357 padding: 8px 0; 358 min-width: 200px; 359 box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25); 360 z-index: 50; 361 animation: scaleIn 0.2s ease-out forwards; 362 transform-origin: bottom right; 363} 364 365@keyframes scaleIn { 366 from { 367 opacity: 0; 368 transform: scale(0.95) translateY(5px); 369 } 370 371 to { 372 opacity: 1; 373 transform: scale(1) translateY(0); 374 } 375} 376 377.picker-header { 378 font-size: 0.75rem; 379 font-weight: 600; 380 color: var(--text-tertiary); 381 text-transform: uppercase; 382 letter-spacing: 0.05em; 383 margin-bottom: 4px; 384 padding: 4px 12px 8px; 385 border-bottom: 1px solid var(--border); 386} 387 388.picker-item { 389 display: flex; 390 align-items: center; 391 gap: 10px; 392 padding: 10px 14px; 393 cursor: pointer; 394 color: var(--text-secondary); 395 font-size: 0.9rem; 396 transition: all 0.15s ease; 397 user-select: none; 398} 399 400.picker-item:hover { 401 background: var(--bg-hover); 402 color: var(--text-primary); 403} 404 405.picker-checkbox-wrapper { 406 position: relative; 407 width: 18px; 408 height: 18px; 409 display: flex; 410 align-items: center; 411 justify-content: center; 412} 413 414.picker-checkbox-wrapper input { 415 position: absolute; 416 opacity: 0; 417 width: 100%; 418 height: 100%; 419 cursor: pointer; 420 z-index: 10; 421} 422 423.picker-checkbox-custom { 424 width: 18px; 425 height: 18px; 426 border: 2px solid var(--text-tertiary); 427 border-radius: 4px; 428 display: flex; 429 align-items: center; 430 justify-content: center; 431 background: transparent; 432 transition: all 0.2s ease; 433 color: white; 434} 435 436.picker-item:hover .picker-checkbox-custom { 437 border-color: var(--text-secondary); 438} 439 440.picker-checkbox-wrapper input:checked + .picker-checkbox-custom { 441 background: var(--accent); 442 border-color: var(--accent); 443 color: white; 444} 445 446.composer-tags-input { 447 width: 100%; 448 padding: 12px 16px; 449 background: var(--bg-secondary); 450 border: 1px solid var(--border); 451 border-radius: var(--radius-md); 452 color: var(--text-primary); 453 font-size: 0.95rem; 454 transition: all 0.15s ease; 455} 456 457.composer-tags-input:focus { 458 outline: none; 459 border-color: var(--accent); 460 box-shadow: 0 0 0 3px var(--accent-subtle); 461} 462 463.composer-tags-input::placeholder { 464 color: var(--text-tertiary); 465} 466 467.history-panel { 468 background: var(--bg-tertiary); 469 border: 1px solid var(--border); 470 border-radius: var(--radius-md); 471 padding: 1rem; 472 margin-bottom: 1rem; 473 font-size: 0.9rem; 474 animation: fadeIn 0.2s ease-out; 475} 476 477.history-header { 478 display: flex; 479 justify-content: space-between; 480 align-items: center; 481 margin-bottom: 1rem; 482 padding-bottom: 0.5rem; 483 border-bottom: 1px solid var(--border); 484} 485 486.history-title { 487 font-weight: 600; 488 text-transform: uppercase; 489 letter-spacing: 0.05em; 490 font-size: 0.75rem; 491 color: var(--text-secondary); 492} 493 494.history-list { 495 list-style: none; 496 display: flex; 497 flex-direction: column; 498 gap: 1rem; 499} 500 501.history-item { 502 position: relative; 503 padding-left: 1rem; 504 border-left: 2px solid var(--border); 505} 506 507.history-date { 508 font-size: 0.75rem; 509 color: var(--text-tertiary); 510 margin-bottom: 0.25rem; 511} 512 513.history-content { 514 color: var(--text-secondary); 515 white-space: pre-wrap; 516} 517 518.history-close-btn { 519 color: var(--text-tertiary); 520 padding: 4px; 521 border-radius: var(--radius-sm); 522 transition: all 0.2s; 523 display: flex; 524 align-items: center; 525 justify-content: center; 526} 527 528.history-close-btn:hover { 529 background: var(--bg-hover); 530 color: var(--text-primary); 531} 532 533.history-status { 534 text-align: center; 535 color: var(--text-tertiary); 536 font-style: italic; 537 padding: 1rem; 538} 539 540.share-menu-container { 541 position: relative; 542} 543 544.share-menu { 545 position: absolute; 546 top: 100%; 547 right: 0; 548 margin-top: 8px; 549 background: var(--bg-primary); 550 border: 1px solid var(--border); 551 border-radius: var(--radius-lg); 552 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); 553 min-width: 180px; 554 padding: 8px 0; 555 z-index: 100; 556 animation: fadeInUp 0.15s ease; 557} 558 559@keyframes fadeInUp { 560 from { 561 opacity: 0; 562 transform: translateY(-8px); 563 } 564 565 to { 566 opacity: 1; 567 transform: translateY(0); 568 } 569} 570 571.share-menu-section { 572 display: flex; 573 flex-direction: column; 574} 575 576.share-menu-label { 577 padding: 4px 12px 8px; 578 font-size: 0.7rem; 579 font-weight: 600; 580 text-transform: uppercase; 581 letter-spacing: 0.05em; 582 color: var(--text-tertiary); 583} 584 585.share-menu-item { 586 display: flex; 587 align-items: center; 588 gap: 10px; 589 padding: 10px 14px; 590 background: none; 591 border: none; 592 width: 100%; 593 text-align: left; 594 font-size: 0.9rem; 595 color: var(--text-primary); 596 cursor: pointer; 597 transition: all 0.1s ease; 598} 599 600.share-menu-item:hover { 601 background: var(--bg-tertiary); 602} 603 604.share-menu-icon { 605 font-size: 1.1rem; 606 width: 24px; 607 text-align: center; 608} 609 610.share-menu-divider { 611 height: 1px; 612 background: var(--border); 613 margin: 6px 0; 614} 615 616.bookmark-card { 617 display: flex; 618 flex-direction: column; 619 gap: 16px; 620} 621 622.bookmark-preview { 623 display: flex; 624 flex-direction: column; 625 background: var(--bg-secondary); 626 border: 1px solid var(--border); 627 border-radius: var(--radius-md); 628 overflow: hidden; 629 text-decoration: none; 630 transition: all 0.2s ease; 631 position: relative; 632} 633 634.bookmark-preview:hover { 635 border-color: var(--accent); 636 box-shadow: var(--shadow-sm); 637 transform: translateY(-1px); 638} 639 640.bookmark-preview::before { 641 content: ""; 642 position: absolute; 643 left: 0; 644 top: 0; 645 bottom: 0; 646 width: 4px; 647 background: var(--accent); 648 opacity: 0.7; 649} 650 651.bookmark-preview-content { 652 padding: 16px 20px; 653 display: flex; 654 flex-direction: column; 655 gap: 8px; 656} 657 658.bookmark-preview-header { 659 display: flex; 660 align-items: center; 661 gap: 8px; 662 margin-bottom: 4px; 663} 664 665.bookmark-preview-site { 666 display: flex; 667 align-items: center; 668 gap: 6px; 669 font-size: 0.75rem; 670 font-weight: 600; 671 color: var(--accent); 672 text-transform: uppercase; 673 letter-spacing: 0.03em; 674} 675 676.bookmark-preview-title { 677 font-size: 1rem; 678 font-weight: 600; 679 line-height: 1.4; 680 color: var(--text-primary); 681 margin: 0; 682 display: -webkit-box; 683 -webkit-line-clamp: 2; 684 line-clamp: 2; 685 -webkit-box-orient: vertical; 686 overflow: hidden; 687} 688 689.bookmark-preview-desc { 690 font-size: 0.875rem; 691 color: var(--text-secondary); 692 line-height: 1.5; 693 margin: 0; 694 display: -webkit-box; 695 -webkit-line-clamp: 2; 696 line-clamp: 2; 697 -webkit-box-orient: vertical; 698 overflow: hidden; 699} 700 701.bookmark-preview-arrow { 702 display: flex; 703 align-items: center; 704 justify-content: center; 705 color: var(--text-tertiary); 706 padding: 0 4px; 707 transition: all 0.2s ease; 708} 709 710.bookmark-preview:hover .bookmark-preview-arrow { 711 color: var(--accent); 712 transform: translateX(2px); 713} 714 715.bookmark-description { 716 font-size: 0.9rem; 717 color: var(--text-secondary); 718 margin: 0; 719 line-height: 1.5; 720} 721 722.bookmark-meta { 723 display: flex; 724 align-items: center; 725 gap: 12px; 726 margin-top: 12px; 727 font-size: 0.85rem; 728 color: var(--text-tertiary); 729} 730 731.bookmark-time { 732 color: var(--text-tertiary); 733} 734 735.bookmark-preview { 736 max-width: 100%; 737 width: 100%; 738 box-sizing: border-box; 739} 740 741@media (max-width: 600px) { 742 .bookmark-preview-content { 743 padding: 12px 14px; 744 } 745 746 .legal-content { 747 padding: 16px; 748 } 749}