PluginProbe
Friends / 4.3.2
Friends v4.3.2
4.3.2 4.3.1 4.3.0 4.2.2 4.2.1 4.2.0 4.1.0 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.0 2.9.1 All 88 releases
← All changes | friends.css +416 -120 4.2.0 → 4.3.2 View file →
@@ -223,16 +223,61 @@
223 223 }
224 224
225 225 html {
226 226 box-sizing: border-box;
227 + color-scheme: light dark;
227 228 font-size: 20px;
228 229 line-height: 1.5;
229 230 -webkit-tap-highlight-color: transparent;
230 231 }
231 232
233 +:root {
234 + --friends-color-background: #f7f8f9;
235 + --friends-color-surface: #fff;
236 + --friends-color-surface-alt: #f7f7f7;
237 + --friends-color-surface-muted: #f8fafc;
238 + --friends-color-border: #eee;
239 + --friends-color-border-strong: #d6d4e8;
240 + --friends-color-text: #48427c;
241 + --friends-color-text-muted: #667085;
242 + --friends-color-text-soft: #999;
243 + --friends-color-link: #2e5bec;
244 + --friends-color-link-hover: #1341d4;
245 + --friends-color-link-visited: #5d80f0;
246 + --friends-color-error: #c0392b;
247 + --friends-color-focus: rgba(46, 91, 236, 0.2);
248 + --friends-color-menu-hover: #dde5fc;
249 + --friends-color-note-background: #f7f7f7;
250 + --friends-color-info-background: #eef6ff;
251 + --friends-color-selected-background: #edf2ff;
252 +}
253 +
254 +@media (prefers-color-scheme: dark) {
255 + :root {
256 + --friends-color-background: #10131a;
257 + --friends-color-surface: #171b24;
258 + --friends-color-surface-alt: #202633;
259 + --friends-color-surface-muted: #141821;
260 + --friends-color-border: #2c3342;
261 + --friends-color-border-strong: #3c465b;
262 + --friends-color-text: #e7eaf2;
263 + --friends-color-text-muted: #a6adbb;
264 + --friends-color-text-soft: #8e96a6;
265 + --friends-color-link: #8fb1ff;
266 + --friends-color-link-hover: #b8ccff;
267 + --friends-color-link-visited: #c4b5fd;
268 + --friends-color-error: #ff8f8f;
269 + --friends-color-focus: rgba(143, 177, 255, 0.28);
270 + --friends-color-menu-hover: #22304a;
271 + --friends-color-note-background: #202633;
272 + --friends-color-info-background: #162438;
273 + --friends-color-selected-background: #1c2b45;
274 + }
275 +}
276 +
232 277 body {
233 - background: #f7f8f9;
234 - color: #48427c;
278 + background: var(--friends-color-background);
279 + color: var(--friends-color-text);
235 280 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
236 281 font-size: .8rem;
237 282 overflow-x: hidden;
238 283 text-rendering: optimizeLegibility;
@@ -238,23 +283,23 @@
238 283 text-rendering: optimizeLegibility;
239 284 }
240 285
241 286 a {
242 - color: #2e5bec;
287 + color: var(--friends-color-link);
243 288 outline: none;
244 289 text-decoration: none;
245 290
246 291 &:focus {
247 - box-shadow: 0 0 0 .1rem rgba(46, 91, 236, 0.2);
292 + box-shadow: 0 0 0 .1rem var(--friends-color-focus);
248 293 }
249 294
250 295 &:focus, &:hover, &:active, &.active {
251 - color: #1341d4;
296 + color: var(--friends-color-link-hover);
252 297 text-decoration: underline;
253 298 }
254 299
255 300 &:visited {
256 - color: #5d80f0;
301 + color: var(--friends-color-link-visited);
257 302 }
258 303 }
259 304
260 305 div {
@@ -304,9 +349,9 @@
304 349 }
305 350
306 351 mark {
307 352 background: #ffe9b3;
308 - color: #48427c;
353 + color: var(--friends-color-text);
309 354 border-bottom: .05rem solid #ffd470;
310 355 border-radius: .1rem;
311 356 padding: .05rem .1rem 0;
312 357 }
@@ -311,9 +356,9 @@
311 356 padding: .05rem .1rem 0;
312 357 }
313 358
314 359 blockquote {
315 - border-left: .1rem solid #eee;
360 + border-left: .1rem solid var(--friends-color-border);
316 361 margin-left: 0;
317 362 padding: .4rem .8rem;
318 363
319 364 & p:last-child {
@@ -417,13 +462,13 @@
417 462 }
418 463
419 464 .form-input {
420 465 appearance: none;
421 - background: #fff;
466 + background: var(--friends-color-surface);
422 467 background-image: none;
423 - border: .05rem solid #d6d4e8;
468 + border: .05rem solid var(--friends-color-border-strong);
424 469 border-radius: .1rem;
425 - color: #48427c;
470 + color: var(--friends-color-text);
426 471 display: block;
427 472 font-size: .8rem;
428 473 height: 1.8rem;
429 474 line-height: 1.2rem;
@@ -434,13 +479,13 @@
434 479 transition: background .2s, border .2s, box-shadow .2s, color .2s;
435 480 width: 100%;
436 481
437 482 &:focus {
438 - box-shadow: 0 0 0 .1rem rgba(46, 91, 236, 0.2);
439 - border-color: #2e5bec;
483 + box-shadow: 0 0 0 .1rem var(--friends-color-focus);
484 + border-color: var(--friends-color-link);
440 485 }
441 486
442 - &::placeholder { color: #d6d4e8; }
487 + &::placeholder { color: var(--friends-color-text-soft); }
443 488 &.input-sm { font-size: .7rem; height: 1.4rem; padding: .05rem .3rem; }
444 489 &.input-lg { font-size: .9rem; height: 2rem; padding: .35rem .6rem; }
445 490 &.input-inline { display: inline-block; vertical-align: middle; width: auto; }
446 491 &[type="file"] { height: auto; }
@@ -450,9 +495,9 @@
450 495 height: auto;
451 496 }
452 497
453 498 .form-input-hint {
454 - color: #d6d4e8;
499 + color: var(--friends-color-text-soft);
455 500 font-size: .7rem;
456 501 margin-top: .2rem;
457 502 }
458 503
@@ -457,9 +502,9 @@
457 502 }
458 503
459 504 .form-select {
460 505 appearance: none;
461 - border: .05rem solid #d6d4e8;
506 + border: .05rem solid var(--friends-color-border-strong);
462 507 border-radius: .1rem;
463 508 color: inherit;
464 509 font-size: .8rem;
465 510 height: 1.8rem;
@@ -467,19 +512,19 @@
467 512 outline: none;
468 513 padding: .25rem .4rem;
469 514 vertical-align: middle;
470 515 width: 100%;
471 - background: #fff;
516 + background: var(--friends-color-surface);
472 517
473 518 &:focus {
474 - box-shadow: 0 0 0 .1rem rgba(46, 91, 236, 0.2);
475 - border-color: #2e5bec;
519 + box-shadow: 0 0 0 .1rem var(--friends-color-focus);
520 + border-color: var(--friends-color-link);
476 521 }
477 522
478 523 &::-ms-expand { display: none; }
479 524
480 525 &:not([multiple]):not([size]) {
481 - background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center / .4rem .5rem;
526 + background: var(--friends-color-surface) url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center / .4rem .5rem;
482 527 padding-right: 1.2rem;
483 528 }
484 529
485 530 &[size], &[multiple] {
@@ -530,10 +575,10 @@
530 575 position: absolute;
531 576 width: 1px;
532 577
533 578 &:focus + .form-icon {
534 - box-shadow: 0 0 0 .1rem rgba(46, 91, 236, 0.2);
535 - border-color: #2e5bec;
579 + box-shadow: 0 0 0 .1rem var(--friends-color-focus);
580 + border-color: var(--friends-color-link);
536 581 }
537 582
538 583 &:checked + .form-icon {
539 584 background: #2e5bec;
@@ -541,9 +586,9 @@
541 586 }
542 587 }
543 588
544 589 & .form-icon {
545 - border: .05rem solid #d6d4e8;
590 + border: .05rem solid var(--friends-color-border-strong);
546 591 cursor: pointer;
547 592 display: inline-block;
548 593 position: absolute;
549 594 transition: background .2s, border .2s, box-shadow .2s, color .2s;
@@ -551,9 +596,9 @@
551 596 }
552 597
553 598 .form-checkbox, .form-radio {
554 599 & .form-icon {
555 - background: #fff;
600 + background: var(--friends-color-surface);
556 601 height: .8rem;
557 602 left: 0;
558 603 top: .3rem;
559 604 width: .8rem;
@@ -558,9 +603,9 @@
558 603 top: .3rem;
559 604 width: .8rem;
560 605 }
561 606
562 - & input:active + .form-icon { background: #f7f7f7; }
607 + & input:active + .form-icon { background: var(--friends-color-surface-alt); }
563 608 }
564 609
565 610 .form-checkbox .form-icon { border-radius: .1rem; }
566 611
@@ -614,9 +659,9 @@
614 659 .form-switch {
615 660 padding-left: 2rem;
616 661
617 662 & .form-icon {
618 - background: #d6d4e8;
663 + background: var(--friends-color-border-strong);
619 664 background-clip: padding-box;
620 665 border-radius: .45rem;
621 666 height: .9rem;
622 667 left: 0;
@@ -623,9 +668,9 @@
623 668 top: .25rem;
624 669 width: 1.6rem;
625 670
626 671 &::before {
627 - background: #fff;
672 + background: var(--friends-color-surface);
628 673 border-radius: 50%;
629 674 content: "";
630 675 display: block;
631 676 height: .8rem;
@@ -637,9 +682,9 @@
637 682 }
638 683 }
639 684
640 685 & input:checked + .form-icon::before { left: 14px; }
641 - & input:active + .form-icon::before { background: white; }
686 + & input:active + .form-icon::before { background: var(--friends-color-surface); }
642 687 }
643 688
644 689 .input-group {
645 690 display: flex;
@@ -644,10 +689,10 @@
644 689 .input-group {
645 690 display: flex;
646 691
647 692 & .input-group-addon {
648 - background: white;
649 - border: .05rem solid #d6d4e8;
693 + background: var(--friends-color-surface);
694 + border: .05rem solid var(--friends-color-border-strong);
650 695 border-radius: .1rem;
651 696 line-height: 1.2rem;
652 697 padding: .25rem .4rem;
653 698 white-space: nowrap;
@@ -668,17 +713,17 @@
668 713 }
669 714
670 715 .form-input:disabled, .form-input.disabled,
671 716 .form-select:disabled, .form-select.disabled {
672 - background-color: #f7f7f7;
717 + background-color: var(--friends-color-surface-alt);
673 718 cursor: not-allowed;
674 719 opacity: .5;
675 720 }
676 721
677 -.form-input[readonly] { background-color: white; }
722 +.form-input[readonly] { background-color: var(--friends-color-surface); }
678 723
679 724 input:disabled + .form-icon, input.disabled + .form-icon {
680 - background: #f7f7f7;
725 + background: var(--friends-color-surface-alt);
681 726 cursor: not-allowed;
682 727 opacity: .5;
683 728 }
684 729
@@ -695,12 +740,12 @@
695 740 ======================================================================== */
696 741
697 742 .btn {
698 743 appearance: none;
699 - background: #fff;
700 - border: .05rem solid #2e5bec;
744 + background: var(--friends-color-surface);
745 + border: .05rem solid var(--friends-color-link);
701 746 border-radius: .1rem;
702 - color: #2e5bec;
747 + color: var(--friends-color-link);
703 748 cursor: pointer;
704 749 display: inline-block;
705 750 font-size: .8rem;
706 751 height: 1.8rem;
@@ -713,12 +758,12 @@
713 758 user-select: none;
714 759 vertical-align: middle;
715 760 white-space: nowrap;
716 761
717 - &:focus { box-shadow: 0 0 0 .1rem rgba(46, 91, 236, 0.2); }
762 + &:focus { box-shadow: 0 0 0 .1rem var(--friends-color-focus); }
718 763
719 764 &:focus, &:hover {
720 - background: #dde5fc;
765 + background: var(--friends-color-menu-hover);
721 766 border-color: #2050eb;
722 767 text-decoration: none;
723 768 }
724 769
@@ -746,11 +791,11 @@
746 791
747 792 &.btn-link {
748 793 background: transparent;
749 794 border-color: transparent;
750 - color: #2e5bec;
795 + color: var(--friends-color-link);
751 796
752 - &:focus, &:hover, &:active, &.active { color: #1341d4; }
797 + &:focus, &:hover, &:active, &.active { color: var(--friends-color-link-hover); }
753 798 }
754 799
755 800 &.btn-sm { font-size: .7rem; height: 1.4rem; padding: .05rem .3rem; }
756 801 &.btn-lg { font-size: .9rem; height: 2rem; padding: .35rem .6rem; }
@@ -902,9 +947,9 @@
902 947 left: .4rem;
903 948 }
904 949
905 950 & .off-canvas-sidebar {
906 - background: white;
951 + background: var(--friends-color-surface);
907 952 bottom: 0;
908 953 min-width: 10rem;
909 954 overflow-y: auto;
910 955 position: fixed;
@@ -999,10 +1044,10 @@
999 1044 Cards
1000 1045 ======================================================================== */
1001 1046
1002 1047 .card {
1003 - background: #fff;
1004 - border: .05rem solid #eee;
1048 + background: var(--friends-color-surface);
1049 + border: .05rem solid var(--friends-color-border);
1005 1050 border-radius: .1rem;
1006 1051 display: flex;
1007 1052 flex-direction: column;
1008 1053
@@ -1061,9 +1106,9 @@
1061 1106 ======================================================================== */
1062 1107
1063 1108 .chip {
1064 1109 align-items: center;
1065 - background: #f7f7f7;
1110 + background: var(--friends-color-surface-alt);
1066 1111 border-radius: 5rem;
1067 1112 display: inline-flex;
1068 1113 font-size: 90%;
1069 1114 height: 1.2rem;
@@ -1102,9 +1147,9 @@
1102 1147 ======================================================================== */
1103 1148
1104 1149 .menu {
1105 1150 box-shadow: 0 .05rem .15rem rgba(62, 57, 107, 0.3);
1106 - background: #fff;
1151 + background: var(--friends-color-surface);
1107 1152 border-radius: .1rem;
1108 1153 list-style: none;
1109 1154 margin: 0;
1110 1155 min-width: 180px;
@@ -1127,10 +1172,10 @@
1127 1172 margin: 0 -.4rem;
1128 1173 padding: .2rem .4rem;
1129 1174 text-decoration: none;
1130 1175
1131 - &:focus, &:hover { background: #dde5fc; color: #2e5bec; }
1132 - &:active, &.active { background: #dde5fc; color: #2e5bec; }
1176 + &:focus, &:hover { background: var(--friends-color-menu-hover); color: var(--friends-color-link); }
1177 + &:active, &.active { background: var(--friends-color-menu-hover); color: var(--friends-color-link); }
1133 1178 }
1134 1179
1135 1180 & + .menu-item { margin-top: .2rem; }
1136 1181 }
@@ -1239,15 +1284,15 @@
1239 1284 .text-error { color: #e85600 !important; }
1240 1285 a.text-error:focus, a.text-error:hover { color: #cf4d00 !important; }
1241 1286 .text-success { color: #32b643 !important; }
1242 1287 .text-warning { color: #ffb700 !important; }
1243 -.text-gray { color: #d6d4e8 !important; }
1244 -.text-dark { color: #48427c !important; }
1288 +.text-gray { color: var(--friends-color-text-soft) !important; }
1289 +.text-dark { color: var(--friends-color-text) !important; }
1245 1290 .text-light { color: #fff !important; }
1246 1291
1247 1292 .bg-primary { background: #2e5bec !important; color: #fff; }
1248 1293 .bg-dark { background: #3e396b !important; color: #fff; }
1249 -.bg-gray { background: white !important; }
1294 +.bg-gray { background: var(--friends-color-surface) !important; }
1250 1295 .bg-success { background: #32b643 !important; color: #fff; }
1251 1296 .bg-warning { background: #ffb700 !important; }
1252 1297 .bg-error { background: #e85600 !important; color: #fff; }
1253 1298
@@ -1259,10 +1304,10 @@
1259 1304 display: block;
1260 1305 position: relative;
1261 1306
1262 1307 &[data-content]::after {
1263 - background: #fff;
1264 - color: #d6d4e8;
1308 + background: var(--friends-color-surface);
1309 + color: var(--friends-color-text-soft);
1265 1310 content: attr(data-content);
1266 1311 display: inline-block;
1267 1312 font-size: .7rem;
1268 1313 padding: 0 .4rem;
@@ -1270,9 +1315,9 @@
1270 1315 }
1271 1316 }
1272 1317
1273 1318 .divider {
1274 - border-top: .05rem solid #eee;
1319 + border-top: .05rem solid var(--friends-color-border);
1275 1320 height: .05rem;
1276 1321 margin: .4rem 0;
1277 1322
1278 1323 &[data-content] { margin: .8rem 0; }
@@ -1282,9 +1327,9 @@
1282 1327 display: block;
1283 1328 padding: .8rem;
1284 1329
1285 1330 &::before {
1286 - border-left: .05rem solid #eee;
1331 + border-left: .05rem solid var(--friends-color-border);
1287 1332 bottom: .4rem;
1288 1333 content: "";
1289 1334 display: block;
1290 1335 left: 50%;
@@ -1456,9 +1501,9 @@
1456 1501 margin-bottom: 0;
1457 1502 }
1458 1503
1459 1504 .off-canvas .off-canvas-sidebar {
1460 - background-color: #f7f8f9;
1505 + background-color: var(--friends-color-background);
1461 1506 margin-top: 32px;
1462 1507 width: 12rem;
1463 1508 }
1464 1509
@@ -1483,21 +1528,21 @@
1483 1528 background-color: rgba(0, 0, 0, 0.75);
1484 1529 }
1485 1530
1486 1531 .friends-page {
1487 - background-color: #f7f8f9;
1488 - color: #48427c;
1532 + background-color: var(--friends-color-background);
1533 + color: var(--friends-color-text);
1489 1534 overflow-wrap: break-word;
1490 1535 min-height: 100vh;
1491 1536
1492 1537 & code, & pre { overflow: auto; }
1493 1538
1494 - & a:visited { color: #1341d4; }
1539 + & a:visited { color: var(--friends-color-link-visited); }
1495 1540 & a.off-canvas-toggle:visited { color: #fff; }
1496 - & a, & a:visited, & a:hover, & a:focus, & a:active { color: #2e5bec; }
1541 + & a, & a:visited, & a:hover, & a:focus, & a:active { color: var(--friends-color-link); }
1497 1542
1498 1543 & summary.accordion-header {
1499 - color: #2e5bec;
1544 + color: var(--friends-color-link);
1500 1545 cursor: pointer;
1501 1546 white-space: nowrap;
1502 1547 text-overflow: ellipsis;
1503 1548
@@ -1528,9 +1573,9 @@
1528 1573 white-space: nowrap;
1529 1574 }
1530 1575
1531 1576 & .menu {
1532 - & a, & a:active, & a:visited { color: #333; padding: .2rem; }
1577 + & a, & a:active, & a:visited { color: var(--friends-color-text); padding: .2rem; }
1533 1578 & .menu-item + .menu-item { margin-top: 0; }
1534 1579 & .divider[data-content] { margin: 0.8rem 0 0.4rem 0; }
1535 1580 & .menu-item.friends-dropdown { margin-top: 0.2rem; margin-bottom: 0.4rem; }
1536 1581 & .menu-item small.label-secondary { display: none; }
@@ -1607,14 +1652,14 @@
1607 1652 & figcaption { text-align: center; font-size: .8rem; }
1608 1653 }
1609 1654
1610 1655 & p.note {
1611 - border-left: 4px solid #eee;
1656 + border-left: 4px solid var(--friends-color-border);
1612 1657 padding: 1rem;
1613 1658 margin-left: 1rem;
1614 1659 font-size: .8rem;
1615 - color: #666;
1616 - background-color: #f7f7f7;
1660 + color: var(--friends-color-text-muted);
1661 + background-color: var(--friends-color-note-background);
1617 1662 }
1618 1663 }
1619 1664 }
1620 1665
@@ -1637,9 +1682,9 @@
1637 1682 }
1638 1683 }
1639 1684
1640 1685 & .friends-sidebar-customize {
1641 - color: #999;
1686 + color: var(--friends-color-text-soft);
1642 1687 font-size: .4rem;
1643 1688 line-height: .6rem;
1644 1689 display: block;
1645 1690 }
@@ -1675,9 +1720,9 @@
1675 1720 &.open { display: block; }
1676 1721 & p.description { color: #3e396b; font-size: .6rem; }
1677 1722
1678 1723 & .activitypub_preview {
1679 - background-color: #f7f8f9;
1724 + background-color: var(--friends-color-background);
1680 1725 padding: .5em;
1681 1726 margin-top: 1em;
1682 1727 margin-bottom: 1em;
1683 1728 max-height: 6em;
@@ -1685,9 +1730,9 @@
1685 1730
1686 1731 & figcaption {
1687 1732 float: right;
1688 1733
1689 - & a:any-link { color: #999; }
1734 + & a:any-link { color: var(--friends-color-text-soft); }
1690 1735 }
1691 1736 }
1692 1737 }
1693 1738
@@ -1693,10 +1738,10 @@
1693 1738
1694 1739 & img.avatar { border-radius: 5px; max-width: 36px; max-height: 36px; }
1695 1740 & img.avatar.avatar-overlay { position: absolute; margin-left: -16px; margin-top: 24px; border-radius: 100%; }
1696 1741 & div.friends-widget { margin-bottom: 2em; }
1697 - & div.friends-main-widget h1 a { color: #222; text-decoration: none; }
1698 - & div.friends-widget h4 a { color: #222; text-decoration: none; }
1742 + & div.friends-main-widget h1 a { color: var(--friends-color-text); text-decoration: none; }
1743 + & div.friends-widget h4 a { color: var(--friends-color-text); text-decoration: none; }
1699 1744 & div.friends-widget a.open-requests { font-size: 90%; font-weight: normal; }
1700 1745 & div.friends-widget ul { margin: .5em 0 1em 0; padding: 0; }
1701 1746
1702 1747 & div.friends-widget h5 {
@@ -1809,18 +1854,18 @@
1809 1854 display: flex;
1810 1855 justify-content: flex-end;
1811 1856
1812 1857 & a {
1813 - color: #2e5bec;
1858 + color: var(--friends-color-link);
1814 1859
1815 1860 & .dashicons { vertical-align: middle; }
1816 1861 }
1817 1862
1818 - & .btn:hover { color: #2e5bec; }
1863 + & .btn:hover { color: var(--friends-color-link); }
1819 1864 }
1820 1865
1821 1866 & footer.comments-content {
1822 - border-top: 1px solid #eee;
1867 + border-top: 1px solid var(--friends-color-border);
1823 1868
1824 1869 &.closed { display: none; }
1825 1870
1826 1871 & .comment-list { padding-left: 0; list-style: none; }
@@ -1833,9 +1878,9 @@
1833 1878 & .comment-list .children {
1834 1879 list-style: none;
1835 1880 margin-left: 0;
1836 1881 padding-left: 5px;
1837 - border-left: 3px solid #eee;
1882 + border-left: 3px solid var(--friends-color-border);
1838 1883 }
1839 1884
1840 1885 & .comment-list .children > li {
1841 1886 margin-top: var(--global--spacing-vertical);
@@ -1878,11 +1923,11 @@
1878 1923 box-sizing: border-box;
1879 1924 padding: .35em .6em;
1880 1925 font-size: inherit;
1881 1926 line-height: 1.3;
1882 - border: 1px solid #ccc;
1927 + border: 1px solid var(--friends-color-border-strong);
1883 1928 border-radius: 3px;
1884 - background: #fff;
1929 + background: var(--friends-color-surface);
1885 1930 }
1886 1931
1887 1932 & .friends-search-input:focus {
1888 1933 outline: 2px solid #2271b1;
@@ -1984,9 +2029,9 @@
1984 2029 & .btn { flex: 0 0 auto; }
1985 2030 }
1986 2031
1987 2032 & .opml-file-hint {
1988 - color: #5f5a7d;
2033 + color: var(--friends-color-text-muted);
1989 2034 font-size: .75rem;
1990 2035 margin: .6rem 0 0;
1991 2036 }
1992 2037
@@ -2028,9 +2073,9 @@
2028 2073 margin: 1rem 0 0;
2029 2074 }
2030 2075
2031 2076 & .bulk-feed-list > .bulk-feed-row {
2032 - background: #f8f8fc;
2077 + background: var(--friends-color-surface-alt);
2033 2078 border-radius: .25rem;
2034 2079 padding: .65rem .75rem;
2035 2080
2036 2081 & > label {
@@ -2055,9 +2100,9 @@
2055 2100 margin: .7rem 0 0;
2056 2101 }
2057 2102
2058 2103 & .feed-preview {
2059 - background: #fff;
2104 + background: var(--friends-color-surface);
2060 2105 border-radius: .25rem;
2061 2106 box-shadow: inset 3px 0 0 #d9def7;
2062 2107 margin-top: 1rem;
2063 2108 padding: .8rem;
@@ -2085,15 +2130,15 @@
2085 2130 flex-direction: column;
2086 2131 min-width: 0;
2087 2132
2088 2133 & small {
2089 - color: #6b7280;
2134 + color: var(--friends-color-text-muted);
2090 2135 overflow-wrap: anywhere;
2091 2136 }
2092 2137 }
2093 2138
2094 2139 & .subscription-preview-description {
2095 - color: #5f5a7d;
2140 + color: var(--friends-color-text-muted);
2096 2141 margin: .6rem 0;
2097 2142 }
2098 2143
2099 2144 & .subscription-feed-list {
@@ -2130,9 +2175,9 @@
2130 2175 grid-column: 1 / -1;
2131 2176 }
2132 2177
2133 2178 & .subscription-feed-option {
2134 - background: #f7f7fb;
2179 + background: var(--friends-color-surface-alt);
2135 2180 border-radius: .25rem;
2136 2181 margin-top: 0;
2137 2182 padding: .65rem;
2138 2183
@@ -2141,9 +2186,9 @@
2141 2186 font-weight: 600;
2142 2187 overflow-wrap: anywhere;
2143 2188
2144 2189 & small {
2145 - color: #6b7280;
2190 + color: var(--friends-color-text-muted);
2146 2191 font-weight: 400;
2147 2192 }
2148 2193 }
2149 2194 }
@@ -2148,9 +2193,9 @@
2148 2193 }
2149 2194 }
2150 2195
2151 2196 & .subscription-feed-details {
2152 - color: #6b7280;
2197 + color: var(--friends-color-text-muted);
2153 2198 font-size: .7rem;
2154 2199 margin: .5rem 0 0;
2155 2200 overflow-wrap: anywhere;
2156 2201 }
@@ -2155,9 +2200,9 @@
2155 2200 overflow-wrap: anywhere;
2156 2201 }
2157 2202
2158 2203 & .subscription-feed-preview {
2159 - background: #fff;
2204 + background: var(--friends-color-surface);
2160 2205 border-radius: .2rem;
2161 2206 box-shadow: inset 0 0 0 1px #e8e8f3;
2162 2207 margin-top: .6rem;
2163 2208 padding: .6rem;
@@ -2172,9 +2217,9 @@
2172 2217 margin-top: .55rem;
2173 2218 }
2174 2219
2175 2220 & p {
2176 - color: #5f5a7d;
2221 + color: var(--friends-color-text-muted);
2177 2222 font-size: .75rem;
2178 2223 margin: .25rem 0 0;
2179 2224 }
2180 2225 }
@@ -2184,9 +2229,9 @@
2184 2229 flex-direction: column;
2185 2230 gap: .1rem;
2186 2231
2187 2232 & small {
2188 - color: #6b7280;
2233 + color: var(--friends-color-text-muted);
2189 2234 font-size: .7rem;
2190 2235 }
2191 2236 }
2192 2237
@@ -2191,9 +2236,9 @@
2191 2236 }
2192 2237
2193 2238 & .subscription-preview-status,
2194 2239 & .bulk-feed-status {
2195 - color: #5f5a7d;
2240 + color: var(--friends-color-text-muted);
2196 2241 font-size: .75rem;
2197 2242
2198 2243 &.error { color: #b91c1c; }
2199 2244 }
@@ -2222,9 +2267,9 @@
2222 2267 }
2223 2268
2224 2269 & .subscription-item {
2225 2270 padding: 8px 0;
2226 - border-bottom: 1px solid #e8e8e8;
2271 + border-bottom: 1px solid var(--friends-color-border);
2227 2272 display: grid;
2228 2273 grid-template-columns: 40px 1fr;
2229 2274 grid-template-rows: auto auto auto;
2230 2275 column-gap: 8px;
@@ -2242,11 +2287,11 @@
2242 2287 }
2243 2288
2244 2289 & .subscription-info { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
2245 2290 & .starred { color: #f5a623; }
2246 - & .subscription-folder { font-size: 0.8em; background: #e8e8e8; padding: 1px 6px; border-radius: 3px; color: #666; }
2247 - & .subscription-meta { grid-column: 2; font-size: 0.85em; color: #888; }
2248 - & .subscription-description { grid-column: 2; font-size: 0.85em; color: #666; margin: 0; }
2291 + & .subscription-folder { font-size: 0.8em; background: var(--friends-color-surface-alt); padding: 1px 6px; border-radius: 3px; color: var(--friends-color-text-muted); }
2292 + & .subscription-meta { grid-column: 2; font-size: 0.85em; color: var(--friends-color-text-soft); }
2293 + & .subscription-description { grid-column: 2; font-size: 0.85em; color: var(--friends-color-text-muted); margin: 0; }
2249 2294 & .subscription-actions {
2250 2295 grid-column: 2;
2251 2296 display: flex;
2252 2297 align-items: center;
@@ -2268,9 +2313,9 @@
2268 2313 & .friends-reaction-picker button {
2269 2314 padding: .5rem;
2270 2315 margin: 0;
2271 2316 font-size: 18px;
2272 - background-color: #fff;
2317 + background-color: var(--friends-color-surface);
2273 2318 border: 0;
2274 2319 cursor: pointer;
2275 2320 z-index: 999999;
2276 2321 }
@@ -2284,25 +2329,25 @@
2284 2329
2285 2330 & .wp-block-friends-message {
2286 2331 max-width: 80%;
2287 2332 margin: 1em;
2288 - border-bottom: 1px solid #eee;
2333 + border-bottom: 1px solid var(--friends-color-border);
2289 2334 }
2290 2335 }
2291 2336
2292 2337 & .friends-dm-view {
2293 - background: #fff;
2294 - border-top: 1px solid #e5e7eb;
2338 + background: var(--friends-color-surface);
2339 + border-top: 1px solid var(--friends-color-border);
2295 2340 display: grid;
2296 2341 grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
2297 - height: calc(100vh - 3.2rem);
2342 + height: calc(var(--friends-dm-viewport-height, 100vh) - 3.2rem);
2298 2343 min-height: 32rem;
2299 2344 }
2300 2345
2301 2346 & .friends-dm-empty {
2302 2347 align-self: start;
2303 - background: #fff;
2304 - border: 1px solid #e5e7eb;
2348 + background: var(--friends-color-surface);
2349 + border: 1px solid var(--friends-color-border);
2305 2350 border-radius: .2rem;
2306 2351 grid-column: 1 / -1;
2307 2352 margin: 1rem;
2308 2353 padding: 1rem;
@@ -2311,10 +2356,10 @@
2311 2356 & p { margin-bottom: 0; }
2312 2357 }
2313 2358
2314 2359 & .friends-dm-sidebar {
2315 - background: #f8fafc;
2316 - border-right: 1px solid #e5e7eb;
2360 + background: var(--friends-color-surface-muted);
2361 + border-right: 1px solid var(--friends-color-border);
2317 2362 overflow: auto;
2318 2363 }
2319 2364
2320 2365 & .friends-profile-messages {
@@ -2323,9 +2368,9 @@
2323 2368 }
2324 2369
2325 2370 & .friends-profile-messages-header {
2326 2371 align-items: center;
2327 - border-bottom: 1px solid #e5e7eb;
2372 + border-bottom: 1px solid var(--friends-color-border);
2328 2373 display: flex;
2329 2374 justify-content: space-between;
2330 2375 padding: .65rem .7rem;
2331 2376 }
@@ -2336,10 +2381,10 @@
2336 2381 }
2337 2382
2338 2383 & .friends-dm-conversation,
2339 2384 & .friends-dm-conversation:visited {
2340 - border-bottom: 1px solid #e5e7eb;
2341 - color: #2f3542;
2385 + border-bottom: 1px solid var(--friends-color-border);
2386 + color: var(--friends-color-text);
2342 2387 display: grid;
2343 2388 gap: .25rem .5rem;
2344 2389 grid-template-columns: 2rem minmax(0, 1fr) auto;
2345 2390 padding: .65rem .7rem;
@@ -2348,10 +2393,10 @@
2348 2393
2349 2394 & .friends-dm-conversation:hover,
2350 2395 & .friends-dm-conversation:focus,
2351 2396 & .friends-dm-conversation.is-selected {
2352 - background: #edf2ff;
2353 - color: #1f2937;
2397 + background: var(--friends-color-selected-background);
2398 + color: var(--friends-color-text);
2354 2399 text-decoration: none;
2355 2400 }
2356 2401
2357 2402 & .friends-dm-conversation.is-unread .friends-dm-conversation-name,
@@ -2377,15 +2422,15 @@
2377 2422 white-space: nowrap;
2378 2423 }
2379 2424
2380 2425 & .friends-dm-conversation-preview {
2381 - color: #667085;
2426 + color: var(--friends-color-text-muted);
2382 2427 font-size: .72rem;
2383 2428 }
2384 2429
2385 2430 & .friends-dm-conversation-meta {
2386 2431 align-items: end;
2387 - color: #667085;
2432 + color: var(--friends-color-text-muted);
2388 2433 display: flex;
2389 2434 flex-direction: column;
2390 2435 font-size: .65rem;
2391 2436 gap: .25rem;
@@ -2410,9 +2455,9 @@
2410 2455 }
2411 2456
2412 2457 & .friends-dm-thread-header {
2413 2458 align-items: center;
2414 - border-bottom: 1px solid #e5e7eb;
2459 + border-bottom: 1px solid var(--friends-color-border);
2415 2460 display: flex;
2416 2461 gap: .6rem;
2417 2462 min-height: 3.2rem;
2418 2463 padding: .55rem .8rem;
@@ -2427,10 +2472,14 @@
2427 2472 font-size: .68rem;
2428 2473 }
2429 2474 }
2430 2475
2476 + & .friends-dm-back {
2477 + display: none;
2478 + }
2479 +
2431 2480 & .friends-dm-messages {
2432 - background: #fff;
2481 + background: var(--friends-color-surface);
2433 2482 overflow: auto;
2434 2483 padding: .7rem .9rem;
2435 2484 }
2436 2485
@@ -2448,8 +2497,28 @@
2448 2497 & .friends-dm-message-meta {
2449 2498 visibility: hidden;
2450 2499 }
2451 2500
2501 + &.is-own-message .friends-dm-message-meta {
2502 + visibility: visible;
2503 +
2504 + & strong,
2505 + & time {
2506 + display: none;
2507 + }
2508 + }
2509 +
2510 + &.is-spaced-message .friends-dm-message-meta {
2511 + visibility: visible;
2512 + }
2513 +
2514 + &.is-own-message.is-spaced-message .friends-dm-message-meta {
2515 + & strong,
2516 + & time {
2517 + display: inline;
2518 + }
2519 + }
2520 +
2452 2521 & .friends-dm-message-content {
2453 2522 margin-top: 0;
2454 2523 }
2455 2524 }
@@ -2454,26 +2523,113 @@
2454 2523 }
2455 2524 }
2456 2525
2457 2526 & .friends-dm-message.is-own-message .friends-dm-message-content {
2458 - background: #eef6ff;
2527 + background: var(--friends-color-info-background);
2459 2528 }
2460 2529
2461 2530 & .friends-dm-message-meta {
2462 2531 align-items: baseline;
2463 2532 display: flex;
2533 + flex-wrap: wrap;
2464 2534 gap: .35rem;
2465 2535 line-height: 1.2;
2466 2536
2467 2537 & time {
2468 - color: #667085;
2538 + color: var(--friends-color-text-muted);
2469 2539 font-size: .65rem;
2470 2540 }
2471 2541 }
2472 2542
2543 + & .friends-dm-delivery-status {
2544 + color: var(--friends-color-text-muted);
2545 + cursor: help;
2546 + font-size: .65rem;
2547 +
2548 + &::before {
2549 + content: "·";
2550 + margin-right: .35rem;
2551 + }
2552 +
2553 + &.is-failed {
2554 + color: var(--friends-color-error);
2555 + }
2556 + }
2557 +
2558 + & .friends-dm-delivery-icon {
2559 + align-items: center;
2560 + display: inline-flex;
2561 + flex: 0 0 auto;
2562 + height: 1rem;
2563 + justify-content: center;
2564 + line-height: 1;
2565 + position: relative;
2566 + width: 1rem;
2567 +
2568 + &::before {
2569 + border: 1.5px solid currentColor;
2570 + border-radius: 50%;
2571 + box-sizing: border-box;
2572 + content: "";
2573 + height: .9rem;
2574 + margin: 0;
2575 + width: .9rem;
2576 + }
2577 +
2578 + &::after {
2579 + border: solid currentColor;
2580 + border-width: 0 1.5px 1.5px 0;
2581 + content: "";
2582 + height: .42rem;
2583 + left: .37rem;
2584 + position: absolute;
2585 + top: .22rem;
2586 + transform: rotate(45deg);
2587 + width: .22rem;
2588 + }
2589 +
2590 + &.is-queued::before {
2591 + border-style: dotted;
2592 + }
2593 +
2594 + &.is-sending::before {
2595 + border-style: dashed;
2596 + }
2597 +
2598 + &.is-failed::after {
2599 + border: 0;
2600 + content: "!";
2601 + font-size: .65rem;
2602 + font-weight: 700;
2603 + height: auto;
2604 + left: auto;
2605 + position: absolute;
2606 + top: .13rem;
2607 + transform: none;
2608 + width: auto;
2609 + }
2610 + }
2611 +
2612 + & .friends-dm-delivery-tooltip {
2613 + background: var(--friends-color-surface);
2614 + border: 1px solid var(--friends-color-border);
2615 + border-radius: .25rem;
2616 + box-shadow: 0 .25rem .75rem rgb(0 0 0 / 16%);
2617 + color: var(--friends-color-text);
2618 + font-size: .75rem;
2619 + line-height: 1.3;
2620 + overflow-wrap: break-word;
2621 + padding: .4rem .5rem;
2622 + pointer-events: none;
2623 + position: fixed;
2624 + white-space: normal;
2625 + width: min(18rem, calc(100vw - 2rem));
2626 + z-index: 9999;
2627 + }
2628 +
2473 2629 & .friends-dm-message-content {
2474 - background: #f8fafc;
2475 - border: 1px solid #e5e7eb;
2630 + background: var(--friends-color-surface-muted);
2631 + border: 1px solid var(--friends-color-border);
2476 2632 border-radius: .3rem;
2477 2633 margin-top: .18rem;
2478 2634 max-width: 48rem;
2479 2635 padding: .45rem .55rem;
@@ -2481,11 +2637,29 @@
2481 2637 & > :first-child { margin-top: 0; }
2482 2638 & > :last-child { margin-bottom: 0; }
2483 2639 }
2484 2640
2641 + & .friends-dm-message-reactions {
2642 + display: flex;
2643 + flex-wrap: wrap;
2644 + gap: .25rem;
2645 + margin-top: .2rem;
2646 + }
2647 +
2648 + & .friends-dm-message-reaction {
2649 + background: var(--friends-color-surface);
2650 + border: 1px solid var(--friends-color-border);
2651 + border-radius: 1rem;
2652 + color: var(--friends-color-text-muted);
2653 + cursor: help;
2654 + font-size: .7rem;
2655 + line-height: 1.4;
2656 + padding: 0 .4rem;
2657 + }
2658 +
2485 2659 & .friends-dm-reply {
2486 - background: #f8fafc;
2487 - border-top: 1px solid #e5e7eb;
2660 + background: var(--friends-color-surface-muted);
2661 + border-top: 1px solid var(--friends-color-border);
2488 2662 padding: .65rem .8rem;
2489 2663
2490 2664 & form.form-horizontal .form-group {
2491 2665 display: flex;
@@ -2505,28 +2679,85 @@
2505 2679 & textarea.friends-message-message {
2506 2680 min-height: 4.2rem;
2507 2681 resize: vertical;
2508 2682 }
2683 +
2684 + & .delete-conversation {
2685 + height: auto;
2686 + line-height: 1.2;
2687 + max-width: 100%;
2688 + white-space: normal;
2689 + }
2509 2690 }
2510 2691
2511 2692 @media (max-width: 840px) {
2693 + & .navbar-section.search.hide-mobile-search {
2694 + display: none;
2695 + }
2696 +
2512 2697 & .friends-dm-view {
2513 2698 grid-template-columns: 1fr;
2514 - height: auto;
2699 + grid-template-rows: minmax(0, 1fr);
2700 + height: min(calc(var(--friends-dm-viewport-height, 100vh) - 3.2rem), 48rem);
2701 + min-height: 0;
2702 + overflow: hidden;
2703 + position: relative;
2515 2704 }
2516 2705
2517 2706 & .friends-dm-sidebar {
2518 - border-bottom: 1px solid #e5e7eb;
2519 2707 border-right: 0;
2520 - max-height: 16rem;
2708 + grid-column: 1;
2709 + grid-row: 1;
2710 + height: 100%;
2711 + max-height: none;
2712 + min-height: 0;
2713 + transform: translateX(0);
2714 + transition: transform .2s ease;
2715 + width: 100%;
2716 + z-index: 1;
2521 2717 }
2522 2718
2523 2719 & .friends-dm-thread {
2524 - min-height: 34rem;
2720 + grid-column: 1;
2721 + grid-row: 1;
2722 + height: 100%;
2723 + min-height: 0;
2724 + overflow: hidden;
2725 + transform: translateX(100%);
2726 + transition: transform .2s ease;
2727 + width: 100%;
2728 + z-index: 2;
2525 2729 }
2730 +
2731 + & .friends-dm-view.is-focused-conversation .friends-dm-sidebar {
2732 + transform: translateX(-100%);
2733 + }
2734 +
2735 + & .friends-dm-view.is-focused-conversation .friends-dm-thread {
2736 + transform: translateX(0);
2737 + }
2738 +
2739 + & .friends-dm-back {
2740 + align-items: center;
2741 + border: 0;
2742 + color: var(--friends-color-text);
2743 + display: flex;
2744 + font-size: 1.25rem;
2745 + line-height: 1;
2746 + text-decoration: none;
2747 + }
2748 +
2749 + & .friends-dm-messages {
2750 + min-height: 0;
2751 + overscroll-behavior: contain;
2752 + }
2753 +
2754 + & .friends-dm-reply {
2755 + padding-bottom: calc(.65rem + env(safe-area-inset-bottom, 0px));
2756 + }
2526 2757 }
2527 2758
2528 - & .chip { background-color: #fff; }
2759 + & .chip { background-color: var(--friends-color-surface); }
2529 2760
2530 2761 /* to support mastodon style tags */
2531 2762 & .invisible {
2532 2763 font-size: 0;
@@ -2652,6 +2883,71 @@
2652 2883
2653 2884 @media (max-width: 960px) {
2654 2885 .friends-page section.posts .card header.entry-header div.author {
2655 2886 max-width: 19em;
2887 + }
2888 +}
2889 +
2890 +/* ========================================================================
2891 + Link Previews
2892 + ======================================================================== */
2893 +
2894 +.friends-page a.friends-link-preview {
2895 + display: flex;
2896 + flex-direction: column;
2897 + margin-top: .8rem;
2898 + overflow: hidden;
2899 + border: .05rem solid var(--friends-color-border-strong);
2900 + border-radius: .4rem;
2901 + background: var(--friends-color-surface-alt);
2902 + color: inherit;
2903 + text-decoration: none;
2904 +
2905 + &:hover, &:focus {
2906 + border-color: var(--friends-color-link);
2907 + text-decoration: none;
2908 + }
2909 +
2910 + & .friends-link-preview-image {
2911 + display: block;
2912 + background: var(--friends-color-surface-muted);
2913 +
2914 + & img {
2915 + display: block;
2916 + width: 100%;
2917 + height: auto;
2918 + max-height: 24rem;
2919 + object-fit: cover;
2920 + aspect-ratio: 1.91 / 1;
2921 + }
2922 + }
2923 +
2924 + & .friends-link-preview-text {
2925 + display: flex;
2926 + flex-direction: column;
2927 + gap: .2rem;
2928 + padding: .6rem .8rem;
2929 + min-width: 0;
2930 + }
2931 +
2932 + & .friends-link-preview-host {
2933 + color: var(--friends-color-text-soft);
2934 + font-size: .7rem;
2935 + text-transform: uppercase;
2936 + letter-spacing: .02em;
2937 + }
2938 +
2939 + & .friends-link-preview-title {
2940 + font-weight: 600;
2941 + line-height: 1.3;
2942 + }
2943 +
2944 + & .friends-link-preview-description {
2945 + color: var(--friends-color-text-muted);
2946 + font-size: .7rem;
2947 + line-height: 1.4;
2948 + display: -webkit-box;
2949 + -webkit-line-clamp: 3;
2950 + -webkit-box-orient: vertical;
2951 + overflow: hidden;
2656 2952 }
2657 2953 }