Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
at ui-refactor 751 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 z-index: 10; 543} 544 545.share-menu { 546 position: absolute; 547 top: 100%; 548 right: 0; 549 margin-top: 8px; 550 background: var(--bg-elevated); 551 border: 1px solid var(--border); 552 border-radius: var(--radius-lg); 553 box-shadow: var(--shadow-lg); 554 min-width: 200px; 555 padding: 8px; 556 z-index: 1000; 557 animation: fadeInUp 0.15s ease; 558} 559 560@keyframes fadeInUp { 561 from { 562 opacity: 0; 563 transform: translateY(-8px); 564 } 565 566 to { 567 opacity: 1; 568 transform: translateY(0); 569 } 570} 571 572.share-menu-section { 573 display: flex; 574 flex-direction: column; 575} 576 577.share-menu-label { 578 padding: 4px 12px 8px; 579 font-size: 0.7rem; 580 font-weight: 600; 581 text-transform: uppercase; 582 letter-spacing: 0.05em; 583 color: var(--text-tertiary); 584} 585 586.share-menu-item { 587 display: flex; 588 align-items: center; 589 gap: 10px; 590 padding: 10px 14px; 591 background: none; 592 border: none; 593 border-radius: var(--radius-md); 594 width: 100%; 595 text-align: left; 596 font-size: 0.875rem; 597 color: var(--text-primary); 598 cursor: pointer; 599 transition: all 0.1s ease; 600} 601 602.share-menu-item:hover { 603 background: var(--bg-hover); 604} 605 606.share-menu-icon { 607 font-size: 1.1rem; 608 width: 24px; 609 text-align: center; 610} 611 612.share-menu-divider { 613 height: 1px; 614 background: var(--border); 615 margin: 6px 0; 616} 617 618.bookmark-card { 619 display: flex; 620 flex-direction: column; 621 gap: 16px; 622} 623 624.bookmark-preview { 625 display: flex; 626 flex-direction: column; 627 background: var(--bg-secondary); 628 border: 1px solid var(--border); 629 border-radius: var(--radius-md); 630 overflow: hidden; 631 text-decoration: none; 632 transition: all 0.2s ease; 633 position: relative; 634} 635 636.bookmark-preview:hover { 637 border-color: var(--accent); 638 box-shadow: var(--shadow-sm); 639 transform: translateY(-1px); 640} 641 642.bookmark-preview::before { 643 content: ""; 644 position: absolute; 645 left: 0; 646 top: 0; 647 bottom: 0; 648 width: 4px; 649 background: var(--accent); 650 opacity: 0.7; 651} 652 653.bookmark-preview-content { 654 padding: 16px 20px; 655 display: flex; 656 flex-direction: column; 657 gap: 8px; 658} 659 660.bookmark-preview-header { 661 display: flex; 662 align-items: center; 663 gap: 8px; 664 margin-bottom: 4px; 665} 666 667.bookmark-preview-site { 668 display: flex; 669 align-items: center; 670 gap: 6px; 671 font-size: 0.75rem; 672 font-weight: 600; 673 color: var(--accent); 674 text-transform: uppercase; 675 letter-spacing: 0.03em; 676} 677 678.bookmark-preview-title { 679 font-size: 1rem; 680 font-weight: 600; 681 line-height: 1.4; 682 color: var(--text-primary); 683 margin: 0; 684 display: -webkit-box; 685 -webkit-line-clamp: 2; 686 line-clamp: 2; 687 -webkit-box-orient: vertical; 688 overflow: hidden; 689} 690 691.bookmark-preview-desc { 692 font-size: 0.875rem; 693 color: var(--text-secondary); 694 line-height: 1.5; 695 margin: 0; 696 display: -webkit-box; 697 -webkit-line-clamp: 2; 698 line-clamp: 2; 699 -webkit-box-orient: vertical; 700 overflow: hidden; 701} 702 703.bookmark-preview-arrow { 704 display: flex; 705 align-items: center; 706 justify-content: center; 707 color: var(--text-tertiary); 708 padding: 0 4px; 709 transition: all 0.2s ease; 710} 711 712.bookmark-preview:hover .bookmark-preview-arrow { 713 color: var(--accent); 714 transform: translateX(2px); 715} 716 717.bookmark-description { 718 font-size: 0.9rem; 719 color: var(--text-secondary); 720 margin: 0; 721 line-height: 1.5; 722} 723 724.bookmark-meta { 725 display: flex; 726 align-items: center; 727 gap: 12px; 728 margin-top: 12px; 729 font-size: 0.85rem; 730 color: var(--text-tertiary); 731} 732 733.bookmark-time { 734 color: var(--text-tertiary); 735} 736 737.bookmark-preview { 738 max-width: 100%; 739 width: 100%; 740 box-sizing: border-box; 741} 742 743@media (max-width: 600px) { 744 .bookmark-preview-content { 745 padding: 12px 14px; 746 } 747 748 .legal-content { 749 padding: 16px; 750 } 751}