PluginProbe
Friends / 4.2.2
Friends v4.2.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 2.9.2 All 87 releases
friends / friends.css

friends.css in Friends 4.2.2, at friends.css

2,851 lines 60.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * Friends Plugin — Default Theme
3 * Pure CSS (no Sass, no Spectre). Uses native CSS nesting.
4 */
5
6 /* ========================================================================
7 Animations
8 ======================================================================== */
9
10 @keyframes loading {
11 0% { transform: rotate(0deg); }
12 100% { transform: rotate(360deg); }
13 }
14
15 @keyframes slide-down {
16 0% {
17 opacity: 0;
18 transform: translateY(-1.6rem);
19 }
20 100% {
21 opacity: 1;
22 transform: translateY(0);
23 }
24 }
25
26 /* ========================================================================
27 Normalize (forked from normalize.css v5)
28 ======================================================================== */
29
30 html {
31 font-family: sans-serif;
32 -ms-text-size-adjust: 100%;
33 -webkit-text-size-adjust: 100%;
34 }
35
36 body {
37 margin: 0;
38 }
39
40 article, aside, footer, header, nav, section {
41 display: block;
42 }
43
44 h1 {
45 font-size: 2em;
46 margin: 0.67em 0;
47 }
48
49 figcaption, figure, main {
50 display: block;
51 }
52
53 hr {
54 box-sizing: content-box;
55 height: 0;
56 overflow: visible;
57 }
58
59 a {
60 background-color: transparent;
61 -webkit-text-decoration-skip: objects;
62 }
63
64 a:active, a:hover {
65 outline-width: 0;
66 }
67
68 address {
69 font-style: normal;
70 }
71
72 b, strong {
73 font-weight: bolder;
74 }
75
76 code, kbd, pre, samp {
77 font-family: "SF Mono", "Segoe UI Mono", "Roboto Mono", Menlo, Courier, monospace;
78 font-size: 1em;
79 }
80
81 dfn {
82 font-style: italic;
83 }
84
85 small {
86 font-size: 80%;
87 font-weight: 400;
88 }
89
90 sub, sup {
91 font-size: 75%;
92 line-height: 0;
93 position: relative;
94 vertical-align: baseline;
95 }
96
97 sub { bottom: -0.25em; }
98 sup { top: -0.5em; }
99
100 audio, video {
101 display: inline-block;
102 }
103
104 audio:not([controls]) {
105 display: none;
106 height: 0;
107 }
108
109 img {
110 border-style: none;
111 }
112
113 svg:not(:root) {
114 overflow: hidden;
115 }
116
117 button, input, optgroup, select, textarea {
118 font-family: inherit;
119 font-size: inherit;
120 line-height: inherit;
121 margin: 0;
122 }
123
124 button, input {
125 overflow: visible;
126 }
127
128 button, select {
129 text-transform: none;
130 }
131
132 button,
133 html [type="button"],
134 [type="reset"],
135 [type="submit"] {
136 -webkit-appearance: button;
137 }
138
139 button::-moz-focus-inner,
140 [type="button"]::-moz-focus-inner,
141 [type="reset"]::-moz-focus-inner,
142 [type="submit"]::-moz-focus-inner {
143 border-style: none;
144 padding: 0;
145 }
146
147 fieldset {
148 border: 0;
149 margin: 0;
150 padding: 0;
151 }
152
153 legend {
154 box-sizing: border-box;
155 color: inherit;
156 display: table;
157 max-width: 100%;
158 padding: 0;
159 white-space: normal;
160 }
161
162 progress {
163 display: inline-block;
164 vertical-align: baseline;
165 }
166
167 textarea {
168 overflow: auto;
169 }
170
171 [type="checkbox"], [type="radio"] {
172 box-sizing: border-box;
173 padding: 0;
174 }
175
176 [type="number"]::-webkit-inner-spin-button,
177 [type="number"]::-webkit-outer-spin-button {
178 height: auto;
179 }
180
181 [type="search"] {
182 -webkit-appearance: textfield;
183 outline-offset: -2px;
184 }
185
186 [type="search"]::-webkit-search-cancel-button,
187 [type="search"]::-webkit-search-decoration {
188 -webkit-appearance: none;
189 }
190
191 ::-webkit-file-upload-button {
192 -webkit-appearance: button;
193 font: inherit;
194 }
195
196 details, menu {
197 display: block;
198 }
199
200 summary {
201 display: list-item;
202 outline: none;
203 }
204
205 canvas {
206 display: inline-block;
207 }
208
209 template {
210 display: none;
211 }
212
213 [hidden] {
214 display: none;
215 }
216
217 /* ========================================================================
218 Base
219 ======================================================================== */
220
221 *, *::before, *::after {
222 box-sizing: inherit;
223 }
224
225 html {
226 box-sizing: border-box;
227 color-scheme: light dark;
228 font-size: 20px;
229 line-height: 1.5;
230 -webkit-tap-highlight-color: transparent;
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
277 body {
278 background: var(--friends-color-background);
279 color: var(--friends-color-text);
280 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
281 font-size: .8rem;
282 overflow-x: hidden;
283 text-rendering: optimizeLegibility;
284 }
285
286 a {
287 color: var(--friends-color-link);
288 outline: none;
289 text-decoration: none;
290
291 &:focus {
292 box-shadow: 0 0 0 .1rem var(--friends-color-focus);
293 }
294
295 &:focus, &:hover, &:active, &.active {
296 color: var(--friends-color-link-hover);
297 text-decoration: underline;
298 }
299
300 &:visited {
301 color: var(--friends-color-link-visited);
302 }
303 }
304
305 div {
306 min-width: 0;
307 }
308
309 /* ========================================================================
310 Typography
311 ======================================================================== */
312
313 h1, h2, h3, h4, h5, h6 {
314 color: inherit;
315 font-weight: 500;
316 line-height: 1.2;
317 margin-bottom: .5em;
318 margin-top: 0;
319 }
320
321 h1, .h1 { font-size: 2rem; }
322 h2, .h2 { font-size: 1.6rem; }
323 h3, .h3 { font-size: 1.4rem; }
324 h4, .h4 { font-size: 1.2rem; }
325 h5, .h5 { font-size: 1rem; }
326 h6, .h6 { font-size: .8rem; }
327
328 p {
329 margin: 0 0 1.2rem;
330 }
331
332 a, ins, u {
333 text-decoration-skip: ink edges;
334 }
335
336 abbr[title] {
337 border-bottom: .05rem dotted;
338 cursor: help;
339 text-decoration: none;
340 }
341
342 kbd {
343 border-radius: .1rem;
344 line-height: 1.25;
345 padding: .1rem .2rem;
346 background: #3e396b;
347 color: #fff;
348 font-size: .7rem;
349 }
350
351 mark {
352 background: #ffe9b3;
353 color: var(--friends-color-text);
354 border-bottom: .05rem solid #ffd470;
355 border-radius: .1rem;
356 padding: .05rem .1rem 0;
357 }
358
359 blockquote {
360 border-left: .1rem solid var(--friends-color-border);
361 margin-left: 0;
362 padding: .4rem .8rem;
363
364 & p:last-child {
365 margin-bottom: 0;
366 }
367 }
368
369 ul, ol {
370 margin: .8rem 0 .8rem .8rem;
371 padding: 0;
372
373 & ul, & ol {
374 margin: .8rem 0 .8rem .8rem;
375 }
376
377 & li {
378 margin-top: .4rem;
379 }
380 }
381
382 ul {
383 list-style: disc inside;
384
385 & ul {
386 list-style-type: circle;
387 }
388 }
389
390 ol {
391 list-style: decimal inside;
392
393 & ol {
394 list-style-type: lower-alpha;
395 }
396 }
397
398 dl {
399 & dt { font-weight: bold; }
400 & dd { margin: .4rem 0 .8rem 0; }
401 }
402
403 /* ========================================================================
404 CJK Font Families
405 ======================================================================== */
406
407 html:lang(zh), html:lang(zh-Hans), .lang-zh, .lang-zh-hans {
408 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif;
409 }
410
411 html:lang(zh-Hant), .lang-zh-hant {
412 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang TC", "Hiragino Sans CNS", "Microsoft JhengHei", "Helvetica Neue", sans-serif;
413 }
414
415 html:lang(ja), .lang-ja {
416 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Hiragino Sans", "Hiragino Kaku Gothic Pro", "Yu Gothic", YuGothic, Meiryo, "Helvetica Neue", sans-serif;
417 }
418
419 html:lang(ko), .lang-ko {
420 font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Malgun Gothic", "Helvetica Neue", sans-serif;
421 }
422
423 :lang(zh), :lang(ja), .lang-cjk {
424 & ins, & u {
425 border-bottom: .05rem solid;
426 text-decoration: none;
427 }
428
429 & del + del, & del + s, & ins + ins, & ins + u,
430 & s + del, & s + s, & u + ins, & u + u {
431 margin-left: .125em;
432 }
433 }
434
435 /* ========================================================================
436 Forms
437 ======================================================================== */
438
439 .form-group {
440 &:not(:last-child) {
441 margin-bottom: .4rem;
442 }
443 }
444
445 fieldset {
446 margin-bottom: .8rem;
447 }
448
449 legend {
450 font-size: .9rem;
451 font-weight: 500;
452 margin-bottom: .8rem;
453 }
454
455 .form-label {
456 display: block;
457 line-height: 1.2rem;
458 padding: .3rem 0;
459
460 &.label-sm { font-size: .7rem; padding: .1rem 0; }
461 &.label-lg { font-size: .9rem; padding: .4rem 0; }
462 }
463
464 .form-input {
465 appearance: none;
466 background: var(--friends-color-surface);
467 background-image: none;
468 border: .05rem solid var(--friends-color-border-strong);
469 border-radius: .1rem;
470 color: var(--friends-color-text);
471 display: block;
472 font-size: .8rem;
473 height: 1.8rem;
474 line-height: 1.2rem;
475 max-width: 100%;
476 outline: none;
477 padding: .25rem .4rem;
478 position: relative;
479 transition: background .2s, border .2s, box-shadow .2s, color .2s;
480 width: 100%;
481
482 &:focus {
483 box-shadow: 0 0 0 .1rem var(--friends-color-focus);
484 border-color: var(--friends-color-link);
485 }
486
487 &::placeholder { color: var(--friends-color-text-soft); }
488 &.input-sm { font-size: .7rem; height: 1.4rem; padding: .05rem .3rem; }
489 &.input-lg { font-size: .9rem; height: 2rem; padding: .35rem .6rem; }
490 &.input-inline { display: inline-block; vertical-align: middle; width: auto; }
491 &[type="file"] { height: auto; }
492 }
493
494 textarea.form-input {
495 height: auto;
496 }
497
498 .form-input-hint {
499 color: var(--friends-color-text-soft);
500 font-size: .7rem;
501 margin-top: .2rem;
502 }
503
504 .form-select {
505 appearance: none;
506 border: .05rem solid var(--friends-color-border-strong);
507 border-radius: .1rem;
508 color: inherit;
509 font-size: .8rem;
510 height: 1.8rem;
511 line-height: 1.2rem;
512 outline: none;
513 padding: .25rem .4rem;
514 vertical-align: middle;
515 width: 100%;
516 background: var(--friends-color-surface);
517
518 &:focus {
519 box-shadow: 0 0 0 .1rem var(--friends-color-focus);
520 border-color: var(--friends-color-link);
521 }
522
523 &::-ms-expand { display: none; }
524
525 &:not([multiple]):not([size]) {
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;
527 padding-right: 1.2rem;
528 }
529
530 &[size], &[multiple] {
531 height: auto;
532 padding: .25rem .4rem;
533
534 & option { padding: .1rem .2rem; }
535 }
536 }
537
538 .has-icon-left, .has-icon-right {
539 position: relative;
540
541 & .form-icon {
542 height: .8rem;
543 margin: 0 .25rem;
544 position: absolute;
545 top: 50%;
546 transform: translateY(-50%);
547 width: .8rem;
548 z-index: 2;
549 }
550 }
551
552 .has-icon-left {
553 & .form-icon { left: .05rem; }
554 & .form-input { padding-left: 1.3rem; }
555 }
556
557 .has-icon-right {
558 & .form-icon { right: .05rem; }
559 & .form-input { padding-right: 1.3rem; }
560 }
561
562 .form-checkbox, .form-radio, .form-switch {
563 display: block;
564 line-height: 1.2rem;
565 margin: .2rem 0;
566 min-height: 1.4rem;
567 padding: .1rem .4rem .1rem 1.2rem;
568 position: relative;
569
570 & input {
571 clip: rect(0, 0, 0, 0);
572 height: 1px;
573 margin: -1px;
574 overflow: hidden;
575 position: absolute;
576 width: 1px;
577
578 &:focus + .form-icon {
579 box-shadow: 0 0 0 .1rem var(--friends-color-focus);
580 border-color: var(--friends-color-link);
581 }
582
583 &:checked + .form-icon {
584 background: #2e5bec;
585 border-color: #2e5bec;
586 }
587 }
588
589 & .form-icon {
590 border: .05rem solid var(--friends-color-border-strong);
591 cursor: pointer;
592 display: inline-block;
593 position: absolute;
594 transition: background .2s, border .2s, box-shadow .2s, color .2s;
595 }
596 }
597
598 .form-checkbox, .form-radio {
599 & .form-icon {
600 background: var(--friends-color-surface);
601 height: .8rem;
602 left: 0;
603 top: .3rem;
604 width: .8rem;
605 }
606
607 & input:active + .form-icon { background: var(--friends-color-surface-alt); }
608 }
609
610 .form-checkbox .form-icon { border-radius: .1rem; }
611
612 .form-checkbox input:checked + .form-icon::before {
613 background-clip: padding-box;
614 border: .1rem solid #fff;
615 border-left-width: 0;
616 border-top-width: 0;
617 content: "";
618 height: 9px;
619 left: 50%;
620 margin-left: -3px;
621 margin-top: -6px;
622 position: absolute;
623 top: 50%;
624 transform: rotate(45deg);
625 width: 6px;
626 }
627
628 .form-checkbox input:indeterminate + .form-icon {
629 background: #2e5bec;
630 border-color: #2e5bec;
631
632 &::before {
633 background: #fff;
634 content: "";
635 height: 2px;
636 left: 50%;
637 margin-left: -5px;
638 margin-top: -1px;
639 position: absolute;
640 top: 50%;
641 width: 10px;
642 }
643 }
644
645 .form-radio .form-icon { border-radius: 50%; }
646
647 .form-radio input:checked + .form-icon::before {
648 background: #fff;
649 border-radius: 50%;
650 content: "";
651 height: 6px;
652 left: 50%;
653 position: absolute;
654 top: 50%;
655 transform: translate(-50%, -50%);
656 width: 6px;
657 }
658
659 .form-switch {
660 padding-left: 2rem;
661
662 & .form-icon {
663 background: var(--friends-color-border-strong);
664 background-clip: padding-box;
665 border-radius: .45rem;
666 height: .9rem;
667 left: 0;
668 top: .25rem;
669 width: 1.6rem;
670
671 &::before {
672 background: var(--friends-color-surface);
673 border-radius: 50%;
674 content: "";
675 display: block;
676 height: .8rem;
677 left: 0;
678 position: absolute;
679 top: 0;
680 transition: background .2s, border .2s, box-shadow .2s, color .2s, left .2s;
681 width: .8rem;
682 }
683 }
684
685 & input:checked + .form-icon::before { left: 14px; }
686 & input:active + .form-icon::before { background: var(--friends-color-surface); }
687 }
688
689 .input-group {
690 display: flex;
691
692 & .input-group-addon {
693 background: var(--friends-color-surface);
694 border: .05rem solid var(--friends-color-border-strong);
695 border-radius: .1rem;
696 line-height: 1.2rem;
697 padding: .25rem .4rem;
698 white-space: nowrap;
699 }
700
701 & .form-input, & .form-select { flex: 1 1 auto; width: 1%; }
702 & .input-group-btn { z-index: 1; }
703
704 & .form-input, & .form-select, & .input-group-addon, & .input-group-btn {
705 &:first-child:not(:last-child) { border-bottom-right-radius: 0; border-top-right-radius: 0; }
706 &:not(:first-child):not(:last-child) { border-radius: 0; margin-left: -.05rem; }
707 &:last-child:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; margin-left: -.05rem; }
708 &:focus { z-index: 2; }
709 }
710
711 & .form-select { width: auto; }
712 &.input-inline { display: inline-flex; }
713 }
714
715 .form-input:disabled, .form-input.disabled,
716 .form-select:disabled, .form-select.disabled {
717 background-color: var(--friends-color-surface-alt);
718 cursor: not-allowed;
719 opacity: .5;
720 }
721
722 .form-input[readonly] { background-color: var(--friends-color-surface); }
723
724 input:disabled + .form-icon, input.disabled + .form-icon {
725 background: var(--friends-color-surface-alt);
726 cursor: not-allowed;
727 opacity: .5;
728 }
729
730 .form-horizontal {
731 padding: .4rem 0;
732
733 & .form-group { display: flex; flex-wrap: wrap; }
734 }
735
736 .form-inline { display: inline-block; }
737
738 /* ========================================================================
739 Buttons
740 ======================================================================== */
741
742 .btn {
743 appearance: none;
744 background: var(--friends-color-surface);
745 border: .05rem solid var(--friends-color-link);
746 border-radius: .1rem;
747 color: var(--friends-color-link);
748 cursor: pointer;
749 display: inline-block;
750 font-size: .8rem;
751 height: 1.8rem;
752 line-height: 1.2rem;
753 outline: none;
754 padding: .25rem .4rem;
755 text-align: center;
756 text-decoration: none;
757 transition: background .2s, border .2s, box-shadow .2s, color .2s;
758 user-select: none;
759 vertical-align: middle;
760 white-space: nowrap;
761
762 &:focus { box-shadow: 0 0 0 .1rem var(--friends-color-focus); }
763
764 &:focus, &:hover {
765 background: var(--friends-color-menu-hover);
766 border-color: #2050eb;
767 text-decoration: none;
768 }
769
770 &:active, &.active {
771 background: #2050eb;
772 border-color: #1845d6;
773 color: #fff;
774 text-decoration: none;
775 }
776
777 &[disabled], &:disabled, &.disabled {
778 cursor: default;
779 opacity: .5;
780 pointer-events: none;
781 }
782
783 &.btn-primary {
784 background: #2e5bec;
785 border-color: #2050eb;
786 color: #fff;
787
788 &:focus, &:hover { background: #1d4be9; border-color: #1845d6; color: #fff; }
789 &:active, &.active { background: #1845d6; border-color: #1340c6; color: #fff; }
790 }
791
792 &.btn-link {
793 background: transparent;
794 border-color: transparent;
795 color: var(--friends-color-link);
796
797 &:focus, &:hover, &:active, &.active { color: var(--friends-color-link-hover); }
798 }
799
800 &.btn-sm { font-size: .7rem; height: 1.4rem; padding: .05rem .3rem; }
801 &.btn-lg { font-size: .9rem; height: 2rem; padding: .35rem .6rem; }
802 &.btn-block { display: block; width: 100%; }
803
804 &.btn-action {
805 width: 1.8rem;
806 padding-left: 0;
807 padding-right: 0;
808
809 &.btn-sm { width: 1.4rem; }
810 &.btn-lg { width: 2rem; }
811 }
812
813 &.btn-clear {
814 background: transparent;
815 border: 0;
816 color: currentColor;
817 height: 1rem;
818 line-height: .8rem;
819 margin-left: .2rem;
820 margin-right: -2px;
821 opacity: 1;
822 padding: .1rem;
823 text-decoration: none;
824 width: 1rem;
825
826 &:focus, &:hover { background: rgba(255, 255, 255, .5); opacity: .95; }
827 &::before { content: "\2715"; }
828 }
829 }
830
831 .btn-group {
832 display: inline-flex;
833 flex-wrap: wrap;
834
835 & .btn {
836 flex: 1 0 auto;
837
838 &:first-child:not(:last-child) { border-bottom-right-radius: 0; border-top-right-radius: 0; }
839 &:not(:first-child):not(:last-child) { border-radius: 0; margin-left: -.05rem; }
840 &:last-child:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; margin-left: -.05rem; }
841 &:focus, &:hover, &:active, &.active { z-index: 1; }
842 }
843
844 &.btn-group-block {
845 display: flex;
846
847 & .btn { flex: 1 0 0; }
848 }
849 }
850
851 /* ========================================================================
852 Layout
853 ======================================================================== */
854
855 .container {
856 margin-left: auto;
857 margin-right: auto;
858 padding-left: .4rem;
859 padding-right: .4rem;
860 width: 100%;
861 }
862
863 .cols, .columns {
864 display: flex;
865 flex-wrap: wrap;
866 margin-left: -.4rem;
867 margin-right: -.4rem;
868
869 &.col-gapless {
870 margin-left: 0;
871 margin-right: 0;
872
873 & > .column { padding-left: 0; padding-right: 0; }
874 }
875
876 &.col-oneline { flex-wrap: nowrap; overflow-x: auto; }
877 }
878
879 [class~="col-"], .column {
880 flex: 1;
881 max-width: 100%;
882 padding-left: .4rem;
883 padding-right: .4rem;
884
885 &.col-12, &.col-11, &.col-10, &.col-9, &.col-8, &.col-7,
886 &.col-6, &.col-5, &.col-4, &.col-3, &.col-2, &.col-1, &.col-auto {
887 flex: none;
888 }
889 }
890
891 .col-12 { width: 100%; }
892 .col-11 { width: 91.66666667%; }
893 .col-10 { width: 83.33333333%; }
894 .col-9 { width: 75%; }
895 .col-8 { width: 66.66666667%; }
896 .col-7 { width: 58.33333333%; }
897 .col-6 { width: 50%; }
898 .col-5 { width: 41.66666667%; }
899 .col-4 { width: 33.33333333%; }
900 .col-3 { width: 25%; }
901 .col-2 { width: 16.66666667%; }
902 .col-1 { width: 8.33333333%; }
903 .col-auto { flex: 0 0 auto; max-width: none; width: auto; }
904 .col-mx-auto { margin-left: auto; margin-right: auto; }
905 .col-ml-auto { margin-left: auto; }
906 .col-mr-auto { margin-right: auto; }
907
908 /* ========================================================================
909 Navbar
910 ======================================================================== */
911
912 .navbar {
913 align-items: stretch;
914 display: flex;
915 flex-wrap: wrap;
916 justify-content: space-between;
917
918 & .navbar-section {
919 align-items: center;
920 display: flex;
921 flex: 1 0 0;
922
923 &:not(:first-child):last-child { justify-content: flex-end; }
924 }
925
926 & .navbar-center { align-items: center; display: flex; flex: 0 0 auto; }
927 & .navbar-brand { font-size: .9rem; text-decoration: none; }
928 }
929
930 /* ========================================================================
931 Off-Canvas
932 ======================================================================== */
933
934 .off-canvas {
935 display: flex;
936 flex-flow: nowrap;
937 height: 100%;
938 position: relative;
939 width: 100%;
940
941 & .off-canvas-toggle {
942 display: block;
943 position: absolute;
944 top: .4rem;
945 transition: none;
946 z-index: 1;
947 left: .4rem;
948 }
949
950 & .off-canvas-sidebar {
951 background: var(--friends-color-surface);
952 bottom: 0;
953 min-width: 10rem;
954 overflow-y: auto;
955 position: fixed;
956 top: 0;
957 transition: transform .25s;
958 z-index: 200;
959 left: 0;
960 transform: translateX(-100%);
961 }
962
963 & .off-canvas-content {
964 flex: 1 1 auto;
965 height: 100%;
966 padding: .4rem .4rem .4rem 4rem;
967 }
968
969 & .off-canvas-overlay {
970 background: rgba(62, 57, 107, .1);
971 border-color: transparent;
972 border-radius: 0;
973 bottom: 0;
974 display: none;
975 height: 100%;
976 left: 0;
977 position: fixed;
978 right: 0;
979 top: 0;
980 width: 100%;
981 }
982
983 & .off-canvas-sidebar:target,
984 & .off-canvas-sidebar.active {
985 transform: translateX(0);
986 }
987
988 & .off-canvas-sidebar:target ~ .off-canvas-overlay,
989 & .off-canvas-sidebar.active ~ .off-canvas-overlay {
990 display: block;
991 z-index: 100;
992 }
993 }
994
995 @media (min-width: 960px) {
996 .off-canvas.off-canvas-sidebar-show {
997 & .off-canvas-toggle { display: none; }
998
999 & .off-canvas-sidebar {
1000 flex: 0 0 auto;
1001 position: relative;
1002 transform: none;
1003 }
1004
1005 & .off-canvas-overlay { display: none !important; }
1006 }
1007 }
1008
1009 /* ========================================================================
1010 Accordions
1011 ======================================================================== */
1012
1013 .accordion {
1014 & input:checked ~ .accordion-header > .icon:first-child,
1015 &[open] > .accordion-header > .icon:first-child {
1016 transform: rotate(90deg);
1017 }
1018
1019 & input:checked ~ .accordion-body,
1020 &[open] > .accordion-body {
1021 max-height: 50rem;
1022 }
1023
1024 & .accordion-header {
1025 display: block;
1026 padding: .2rem .4rem;
1027
1028 & .icon { transition: transform .25s; }
1029 }
1030
1031 & .accordion-body {
1032 margin-bottom: .4rem;
1033 max-height: 0;
1034 overflow: hidden;
1035 transition: max-height .25s;
1036 }
1037 }
1038
1039 summary.accordion-header::-webkit-details-marker {
1040 display: none;
1041 }
1042
1043 /* ========================================================================
1044 Cards
1045 ======================================================================== */
1046
1047 .card {
1048 background: var(--friends-color-surface);
1049 border: .05rem solid var(--friends-color-border);
1050 border-radius: .1rem;
1051 display: flex;
1052 flex-direction: column;
1053
1054 & .card-header, & .card-body, & .card-footer {
1055 padding: .8rem;
1056 padding-bottom: 0;
1057
1058 &:last-child { padding-bottom: .8rem; }
1059 }
1060
1061 & .card-body { flex: 1 1 auto; }
1062
1063 & .card-image {
1064 padding-top: .8rem;
1065
1066 &:first-child {
1067 padding-top: 0;
1068
1069 & img { border-top-left-radius: .1rem; border-top-right-radius: .1rem; }
1070 }
1071
1072 &:last-child img { border-bottom-left-radius: .1rem; border-bottom-right-radius: .1rem; }
1073 }
1074 }
1075
1076 /* ========================================================================
1077 Navs
1078 ======================================================================== */
1079
1080 .nav {
1081 display: flex;
1082 flex-direction: column;
1083 list-style: none;
1084 margin: .2rem 0;
1085
1086 & .nav-item a {
1087 color: #7770b3;
1088 padding: .2rem .4rem;
1089 text-decoration: none;
1090
1091 &:focus, &:hover { color: #2e5bec; }
1092 }
1093
1094 & .nav-item.active > a {
1095 color: #5d5899;
1096 font-weight: bold;
1097
1098 &:focus, &:hover { color: #2e5bec; }
1099 }
1100
1101 & .nav { margin-bottom: .4rem; margin-left: .8rem; }
1102 }
1103
1104 /* ========================================================================
1105 Chips
1106 ======================================================================== */
1107
1108 .chip {
1109 align-items: center;
1110 background: var(--friends-color-surface-alt);
1111 border-radius: 5rem;
1112 display: inline-flex;
1113 font-size: 90%;
1114 height: 1.2rem;
1115 line-height: .8rem;
1116 margin: .1rem;
1117 max-width: 320px;
1118 overflow: hidden;
1119 padding: .2rem .4rem;
1120 text-decoration: none;
1121 text-overflow: ellipsis;
1122 vertical-align: middle;
1123 white-space: nowrap;
1124
1125 &.active { background: #2e5bec; color: #fff; }
1126 & .avatar { margin-left: -.4rem; margin-right: .2rem; }
1127 & .btn-clear { border-radius: 50%; transform: scale(.75); }
1128 }
1129
1130 .chip.activitypub-follower-check.is-following {
1131 background: #e4f6e8;
1132 color: #116329;
1133 }
1134
1135 .chip.activitypub-follower-check.is-not-following {
1136 background: #fff4d6;
1137 color: #7a4d00;
1138 }
1139
1140 .chip.activitypub-follower-check.is-error {
1141 background: #fde7e9;
1142 color: #8a2424;
1143 }
1144
1145 /* ========================================================================
1146 Menus
1147 ======================================================================== */
1148
1149 .menu {
1150 box-shadow: 0 .05rem .15rem rgba(62, 57, 107, 0.3);
1151 background: var(--friends-color-surface);
1152 border-radius: .1rem;
1153 list-style: none;
1154 margin: 0;
1155 min-width: 180px;
1156 padding: .4rem;
1157 transform: translateY(.2rem);
1158 z-index: 300;
1159
1160 &.menu-nav { background: transparent; box-shadow: none; }
1161
1162 & .menu-item {
1163 margin-top: 0;
1164 padding: 0 .4rem;
1165 position: relative;
1166 text-decoration: none;
1167
1168 & > a {
1169 border-radius: .1rem;
1170 color: inherit;
1171 display: block;
1172 margin: 0 -.4rem;
1173 padding: .2rem .4rem;
1174 text-decoration: none;
1175
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); }
1178 }
1179
1180 & + .menu-item { margin-top: .2rem; }
1181 }
1182
1183 & .menu-badge {
1184 align-items: center;
1185 display: flex;
1186 height: 100%;
1187 position: absolute;
1188 right: 0;
1189 top: 0;
1190
1191 & .label { margin-right: .4rem; }
1192 }
1193 }
1194
1195 /* ========================================================================
1196 Autocomplete
1197 ======================================================================== */
1198
1199 .form-autocomplete {
1200 position: relative;
1201
1202 & .form-autocomplete-input {
1203 align-content: flex-start;
1204 display: flex;
1205 flex-wrap: wrap;
1206 height: auto;
1207 min-height: 1.6rem;
1208 padding: .1rem;
1209
1210 &.is-focused {
1211 box-shadow: 0 0 0 .1rem rgba(46, 91, 236, 0.2);
1212 border-color: #2e5bec;
1213 }
1214
1215 & .form-input {
1216 border-color: transparent;
1217 box-shadow: none;
1218 display: inline-block;
1219 flex: 1 0 auto;
1220 height: 1.2rem;
1221 line-height: .8rem;
1222 margin: .1rem;
1223 width: auto;
1224 }
1225 }
1226
1227 & .menu {
1228 left: 0;
1229 position: absolute;
1230 top: 100%;
1231 width: 100%;
1232 }
1233
1234 &.autocomplete-oneline {
1235 & .form-autocomplete-input { flex-wrap: nowrap; overflow-x: auto; }
1236 & .chip { flex: 1 0 auto; }
1237 }
1238 }
1239
1240 /* ========================================================================
1241 Loading
1242 ======================================================================== */
1243
1244 .loading {
1245 color: transparent !important;
1246 min-height: .8rem;
1247 pointer-events: none;
1248 position: relative;
1249
1250 &::after {
1251 animation: loading 500ms infinite linear;
1252 background: transparent;
1253 border: .1rem solid #2e5bec;
1254 border-radius: 50%;
1255 border-right-color: transparent;
1256 border-top-color: transparent;
1257 content: "";
1258 display: block;
1259 height: .8rem;
1260 left: 50%;
1261 margin-left: -.4rem;
1262 margin-top: -.4rem;
1263 opacity: 1;
1264 padding: 0;
1265 position: absolute;
1266 top: 50%;
1267 width: .8rem;
1268 z-index: 1;
1269 }
1270
1271 &.loading-lg {
1272 min-height: 2rem;
1273
1274 &::after { height: 1.6rem; margin-left: -.8rem; margin-top: -.8rem; width: 1.6rem; }
1275 }
1276 }
1277
1278 /* ========================================================================
1279 Color Utilities
1280 ======================================================================== */
1281
1282 .text-primary { color: #2e5bec !important; }
1283 a.text-primary:focus, a.text-primary:hover { color: #2050eb !important; }
1284 .text-error { color: #e85600 !important; }
1285 a.text-error:focus, a.text-error:hover { color: #cf4d00 !important; }
1286 .text-success { color: #32b643 !important; }
1287 .text-warning { color: #ffb700 !important; }
1288 .text-gray { color: var(--friends-color-text-soft) !important; }
1289 .text-dark { color: var(--friends-color-text) !important; }
1290 .text-light { color: #fff !important; }
1291
1292 .bg-primary { background: #2e5bec !important; color: #fff; }
1293 .bg-dark { background: #3e396b !important; color: #fff; }
1294 .bg-gray { background: var(--friends-color-surface) !important; }
1295 .bg-success { background: #32b643 !important; color: #fff; }
1296 .bg-warning { background: #ffb700 !important; }
1297 .bg-error { background: #e85600 !important; color: #fff; }
1298
1299 /* ========================================================================
1300 Divider
1301 ======================================================================== */
1302
1303 .divider, .divider-vert {
1304 display: block;
1305 position: relative;
1306
1307 &[data-content]::after {
1308 background: var(--friends-color-surface);
1309 color: var(--friends-color-text-soft);
1310 content: attr(data-content);
1311 display: inline-block;
1312 font-size: .7rem;
1313 padding: 0 .4rem;
1314 transform: translateY(-.65rem);
1315 }
1316 }
1317
1318 .divider {
1319 border-top: .05rem solid var(--friends-color-border);
1320 height: .05rem;
1321 margin: .4rem 0;
1322
1323 &[data-content] { margin: .8rem 0; }
1324 }
1325
1326 .divider-vert {
1327 display: block;
1328 padding: .8rem;
1329
1330 &::before {
1331 border-left: .05rem solid var(--friends-color-border);
1332 bottom: .4rem;
1333 content: "";
1334 display: block;
1335 left: 50%;
1336 position: absolute;
1337 top: .4rem;
1338 transform: translateX(-50%);
1339 }
1340
1341 &[data-content]::after {
1342 left: 50%;
1343 padding: .2rem 0;
1344 position: absolute;
1345 top: 50%;
1346 transform: translate(-50%, -50%);
1347 }
1348 }
1349
1350 /* ========================================================================
1351 Display Utilities
1352 ======================================================================== */
1353
1354 .d-block { display: block; }
1355 .d-inline { display: inline; }
1356 .d-inline-block { display: inline-block; }
1357 .d-flex { display: flex; }
1358 .d-inline-flex { display: inline-flex; }
1359 .d-none, .d-hide { display: none !important; }
1360 .d-visible { visibility: visible; }
1361 .d-invisible { visibility: hidden; }
1362
1363 .text-hide {
1364 background: transparent;
1365 border: 0;
1366 color: transparent;
1367 font-size: 0;
1368 line-height: 0;
1369 text-shadow: none;
1370 }
1371
1372 .text-assistive {
1373 border: 0;
1374 clip: rect(0, 0, 0, 0);
1375 height: 1px;
1376 margin: -1px;
1377 overflow: hidden;
1378 padding: 0;
1379 position: absolute;
1380 width: 1px;
1381 }
1382
1383 /* ========================================================================
1384 Position Utilities
1385 ======================================================================== */
1386
1387 .clearfix::after { clear: both; content: ""; display: table; }
1388 .float-left { float: left !important; }
1389 .float-right { float: right !important; }
1390 .p-relative { position: relative !important; }
1391 .p-absolute { position: absolute !important; }
1392 .p-fixed { position: fixed !important; }
1393 .p-sticky { position: sticky !important; }
1394 .p-centered { display: block; float: none; margin-left: auto; margin-right: auto; }
1395 .flex-centered { align-items: center; display: flex; justify-content: center; }
1396
1397 /* Spacing: 0 */
1398 .m-0 { margin: 0 !important; }
1399 .mb-0 { margin-bottom: 0 !important; }
1400 .ml-0 { margin-left: 0 !important; }
1401 .mr-0 { margin-right: 0 !important; }
1402 .mt-0 { margin-top: 0 !important; }
1403 .mx-0 { margin-left: 0 !important; margin-right: 0 !important; }
1404 .my-0 { margin-bottom: 0 !important; margin-top: 0 !important; }
1405 .p-0 { padding: 0 !important; }
1406 .pb-0 { padding-bottom: 0 !important; }
1407 .pl-0 { padding-left: 0 !important; }
1408 .pr-0 { padding-right: 0 !important; }
1409 .pt-0 { padding-top: 0 !important; }
1410 .px-0 { padding-left: 0 !important; padding-right: 0 !important; }
1411 .py-0 { padding-bottom: 0 !important; padding-top: 0 !important; }
1412
1413 /* Spacing: 1 (.2rem) */
1414 .m-1 { margin: .2rem !important; }
1415 .mb-1 { margin-bottom: .2rem !important; }
1416 .ml-1 { margin-left: .2rem !important; }
1417 .mr-1 { margin-right: .2rem !important; }
1418 .mt-1 { margin-top: .2rem !important; }
1419 .mx-1 { margin-left: .2rem !important; margin-right: .2rem !important; }
1420 .my-1 { margin-bottom: .2rem !important; margin-top: .2rem !important; }
1421 .p-1 { padding: .2rem !important; }
1422 .pb-1 { padding-bottom: .2rem !important; }
1423 .pl-1 { padding-left: .2rem !important; }
1424 .pr-1 { padding-right: .2rem !important; }
1425 .pt-1 { padding-top: .2rem !important; }
1426 .px-1 { padding-left: .2rem !important; padding-right: .2rem !important; }
1427 .py-1 { padding-bottom: .2rem !important; padding-top: .2rem !important; }
1428
1429 /* Spacing: 2 (.4rem) */
1430 .m-2 { margin: .4rem !important; }
1431 .mb-2 { margin-bottom: .4rem !important; }
1432 .ml-2 { margin-left: .4rem !important; }
1433 .mr-2 { margin-right: .4rem !important; }
1434 .mt-2 { margin-top: .4rem !important; }
1435 .mx-2 { margin-left: .4rem !important; margin-right: .4rem !important; }
1436 .my-2 { margin-bottom: .4rem !important; margin-top: .4rem !important; }
1437 .p-2 { padding: .4rem !important; }
1438 .pb-2 { padding-bottom: .4rem !important; }
1439 .pl-2 { padding-left: .4rem !important; }
1440 .pr-2 { padding-right: .4rem !important; }
1441 .pt-2 { padding-top: .4rem !important; }
1442 .px-2 { padding-left: .4rem !important; padding-right: .4rem !important; }
1443 .py-2 { padding-bottom: .4rem !important; padding-top: .4rem !important; }
1444
1445 /* ========================================================================
1446 Friends Plugin — Custom Styles
1447 ======================================================================== */
1448
1449 .friends-dropdown {
1450 position: relative;
1451
1452 & .menu {
1453 animation: slide-down .15s ease 1;
1454 display: none;
1455 left: 0;
1456 max-height: 50vh;
1457 overflow-y: auto;
1458 position: absolute;
1459 top: 100%;
1460 }
1461
1462 &.friends-dropdown-right {
1463 display: none;
1464
1465 & .menu { left: auto; right: 0; }
1466 }
1467
1468 &.active .menu, & .menu:hover { display: block; }
1469
1470 & .btn-group .friends-dropdown-toggle:nth-last-child(2) {
1471 border-bottom-right-radius: .1rem;
1472 border-top-right-radius: .1rem;
1473 }
1474 }
1475
1476 .off-canvas .off-canvas-content {
1477 margin-top: 32px;
1478 padding-top: 1rem;
1479 padding-left: 1rem;
1480 padding-right: 1rem;
1481 }
1482
1483 @media (min-width: 960px) {
1484 .off-canvas .off-canvas-content {
1485 padding-left: 2rem;
1486 padding-right: 2rem;
1487 }
1488 }
1489
1490 .off-canvas .off-canvas-toggle {
1491 top: 3rem;
1492 left: 1rem;
1493 color: #fff;
1494 }
1495
1496 .off-canvas .off-canvas-content header.navbar {
1497 margin-bottom: 32px;
1498 }
1499
1500 .off-canvas .off-canvas-content header.navbar.no-bottom-margin {
1501 margin-bottom: 0;
1502 }
1503
1504 .off-canvas .off-canvas-sidebar {
1505 background-color: var(--friends-color-background);
1506 margin-top: 32px;
1507 width: 12rem;
1508 }
1509
1510 .off-canvas .off-canvas-content header.navbar #page-title {
1511 margin-top: .1em;
1512 margin-left: 3rem;
1513 }
1514
1515 h2#page-title a.dashicons {
1516 font-size: .8em;
1517 margin-right: .5em;
1518 vertical-align: baseline;
1519 }
1520
1521 @media (min-width: 960px) {
1522 .off-canvas .off-canvas-content header.navbar #page-title {
1523 margin-left: 0;
1524 }
1525 }
1526
1527 ::backdrop {
1528 background-color: rgba(0, 0, 0, 0.75);
1529 }
1530
1531 .friends-page {
1532 background-color: var(--friends-color-background);
1533 color: var(--friends-color-text);
1534 overflow-wrap: break-word;
1535 min-height: 100vh;
1536
1537 & code, & pre { overflow: auto; }
1538
1539 & a:visited { color: var(--friends-color-link-visited); }
1540 & a.off-canvas-toggle:visited { color: #fff; }
1541 & a, & a:visited, & a:hover, & a:focus, & a:active { color: var(--friends-color-link); }
1542
1543 & summary.accordion-header {
1544 color: var(--friends-color-link);
1545 cursor: pointer;
1546 white-space: nowrap;
1547 text-overflow: ellipsis;
1548
1549 & .dashicons { vertical-align: bottom; }
1550 }
1551
1552 & .btn-arrow:before { content: "\2192 "; }
1553 & .accordion[open] .accordion-body { max-height: 100rem; }
1554
1555 & .nav-links div a, & .nav-links div a:hover {
1556 appearance: none;
1557 background: #2e5bec;
1558 border: .05rem solid #2050eb;
1559 border-radius: .1rem;
1560 color: #fff;
1561 cursor: pointer;
1562 display: inline-block;
1563 font-size: .8rem;
1564 height: 1.8rem;
1565 line-height: 1.2rem;
1566 outline: none;
1567 padding: .25rem .4rem;
1568 text-align: center;
1569 text-decoration: none;
1570 transition: background .2s, border .2s, box-shadow .2s, color .2s;
1571 user-select: none;
1572 vertical-align: middle;
1573 white-space: nowrap;
1574 }
1575
1576 & .menu {
1577 & a, & a:active, & a:visited { color: var(--friends-color-text); padding: .2rem; }
1578 & .menu-item + .menu-item { margin-top: 0; }
1579 & .divider[data-content] { margin: 0.8rem 0 0.4rem 0; }
1580 & .menu-item.friends-dropdown { margin-top: 0.2rem; margin-bottom: 0.4rem; }
1581 & .menu-item small.label-secondary { display: none; }
1582 & .menu-item:hover small.label-secondary { display: inline-block; }
1583
1584 & .has-icon-left .ab-icon {
1585 line-height: 1.2;
1586 margin-right: .2em;
1587
1588 & .dashicons.dashicons-plus {
1589 color: #32c170;
1590 font-size: .5em;
1591 margin-left: -1.5em;
1592 margin-top: -2.1em;
1593 }
1594 }
1595 }
1596
1597 & button, & input { min-height: auto; }
1598 & .d-none { display: none; }
1599 & dialog { border: 0; box-shadow: 0 0 10px rgba(0, 0, 0, 0.6); }
1600 & header.navbar section.navbar-section.author { flex: 3; min-width: 20em; }
1601 & summary.quick-status-panel-opener { margin-bottom: 2em; cursor: pointer; }
1602 & .activitypub-custom-emoji {
1603 display: inline-block;
1604 width: auto;
1605 max-width: 1.5em;
1606 height: 1em;
1607 max-height: 1em;
1608 margin: 0 0.05em;
1609 object-fit: contain;
1610 vertical-align: -0.15em;
1611 }
1612
1613 & article {
1614 margin-bottom: 2em;
1615
1616 & .card-title { padding-left: .8rem; }
1617
1618 & .card-body {
1619 & img, & video { max-width: 100% !important; height: auto; }
1620 }
1621
1622 & .overflow { height: .5em; }
1623 & .boosted .follow-button, & .boosted .follow-button span.name { display: none; }
1624 & .boosted:hover .follow-button { display: inline; }
1625
1626 &.format-status {
1627 & div.teaser { display: none; }
1628 & .card-title { padding-left: 0; }
1629 }
1630
1631 &.format-image {
1632 & a.collapse-post { display: none; }
1633 & .card-footer { padding-top: 0; padding-bottom: 1rem; }
1634 & .card-footer a .text { display: block; font-size: 10px; line-height: 8px; }
1635 }
1636 }
1637
1638 & .card {
1639 height: 100%;
1640 box-shadow: 0 0 2px rgba(48, 55, 66, .15);
1641 padding: 0;
1642 border: 0;
1643 border-radius: 10px;
1644 margin-bottom: 1em;
1645
1646 & .card-body {
1647 & ul, & ol { margin-left: 1rem; }
1648 & img, & video { max-width: 100% !important; height: auto; }
1649
1650 & .wp-block-image, & .wp-block-gallery {
1651 &.alignfull, &.alignwide { margin: 0; }
1652 & figcaption { text-align: center; font-size: .8rem; }
1653 }
1654
1655 & p.note {
1656 border-left: 4px solid var(--friends-color-border);
1657 padding: 1rem;
1658 margin-left: 1rem;
1659 font-size: .8rem;
1660 color: var(--friends-color-text-muted);
1661 background-color: var(--friends-color-note-background);
1662 }
1663 }
1664 }
1665
1666 & .friends-brand {
1667 position: fixed;
1668 margin-left: 1em;
1669 margin-top: 1em;
1670 font-size: 1.5em;
1671
1672 & .friends-logo {
1673 & a, & a:visited, & a:active { color: #2e5bec; }
1674
1675 & h2 {
1676 display: inline-block;
1677 font-size: 1.2rem;
1678 font-weight: 700;
1679 line-height: 1.5rem;
1680 margin-bottom: 0;
1681 text-transform: uppercase;
1682 }
1683 }
1684
1685 & .friends-sidebar-customize {
1686 color: var(--friends-color-text-soft);
1687 font-size: .4rem;
1688 line-height: .6rem;
1689 display: block;
1690 }
1691 }
1692
1693 & #friends-sidebar .friends-nav {
1694 bottom: 1.5rem;
1695 -webkit-overflow-scrolling: touch;
1696 overflow-y: auto;
1697 padding: .5rem;
1698 position: fixed;
1699 top: 5.5rem;
1700 width: 12rem;
1701 margin-left: 1em;
1702
1703 & .accordion-header { padding: 0; }
1704
1705 & .subscription-count, & .friend-count {
1706 border: 1px solid #2e5bec;
1707 color: #2e5bec;
1708 padding: 4px 4px 4px 6px;
1709 font-size: 10px;
1710 border-radius: 20px;
1711 line-height: 20px;
1712 vertical-align: bottom;
1713 }
1714 }
1715
1716 & #quick-post-panel {
1717 display: none;
1718 margin-bottom: 2em;
1719
1720 &.open { display: block; }
1721 & p.description { color: #3e396b; font-size: .6rem; }
1722
1723 & .activitypub_preview {
1724 background-color: var(--friends-color-background);
1725 padding: .5em;
1726 margin-top: 1em;
1727 margin-bottom: 1em;
1728 max-height: 6em;
1729 overflow-y: auto;
1730
1731 & figcaption {
1732 float: right;
1733
1734 & a:any-link { color: var(--friends-color-text-soft); }
1735 }
1736 }
1737 }
1738
1739 & img.avatar { border-radius: 5px; max-width: 36px; max-height: 36px; }
1740 & img.avatar.avatar-overlay { position: absolute; margin-left: -16px; margin-top: 24px; border-radius: 100%; }
1741 & div.friends-widget { margin-bottom: 2em; }
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; }
1744 & div.friends-widget a.open-requests { font-size: 90%; font-weight: normal; }
1745 & div.friends-widget ul { margin: .5em 0 1em 0; padding: 0; }
1746
1747 & div.friends-widget h5 {
1748 margin-bottom: .5em;
1749 font-size: .7rem;
1750 text-transform: uppercase;
1751 font-weight: bold;
1752 letter-spacing: 2px;
1753 color: #2e5bec;
1754 }
1755
1756 & section.posts {
1757 & .friends-empty-state > .card-body {
1758 padding: 1.25rem;
1759 }
1760
1761 & .card {
1762 & header.entry-header {
1763 display: flex;
1764 font-size: 88%;
1765 line-height: 1.4;
1766 max-width: 100%;
1767 margin: 0;
1768 padding: .8rem;
1769 padding-bottom: 1.5em;
1770
1771 & div.avatar { margin-right: .5em; }
1772 & div.friends-dropdown { display: inline-block; margin-right: -.4rem; }
1773 }
1774
1775 & h4.entry-title {
1776 font-size: 130%;
1777 line-height: 1.4;
1778 margin: 0 0 1em 0;
1779 text-align: left;
1780
1781 & a {
1782 text-decoration: none;
1783
1784 & span.dashicons { margin-top: 4px; margin-left: 6px; color: #32c170; }
1785 }
1786
1787 &:after { display: none; }
1788 }
1789 }
1790
1791 & span.reading-time::before { content: " | "; }
1792 & article.status-trash { opacity: .5; }
1793
1794 & article.card.column.post_format-post-format-status.format-status header.entry-header div.post-meta {
1795 width: calc(100% - 12em);
1796 }
1797
1798 &.all-collapsed article:not(.uncollapsed):not(:only-child),
1799 & article.collapsed {
1800 & div.card-body { display: none; }
1801
1802 & header.entry-header {
1803 padding-left: 1rem;
1804 padding-bottom: 0;
1805
1806 & div.avatar { display: none; }
1807 & div.author { display: inline; }
1808
1809 & div.permalink {
1810 display: inline;
1811
1812 &::before { content: " | "; }
1813 }
1814 }
1815
1816 & h4.card-title { padding-left: 1rem; }
1817 & a.collapse-post { display: none; }
1818
1819 &.format-status {
1820 padding-bottom: 0;
1821 margin-bottom: .5em;
1822 width: 100%;
1823
1824 & div.teaser {
1825 text-overflow: ellipsis;
1826 overflow: hidden;
1827 white-space: nowrap;
1828 display: inline-block;
1829 margin-left: 60px;
1830 margin-right: 2em;
1831 margin-top: -1em;
1832 margin-bottom: 0.6em;
1833 }
1834
1835 & header {
1836 padding-left: 0;
1837 margin-bottom: 0;
1838
1839 & div.post-meta {
1840 width: calc(100% - 7em);
1841 max-height: 1.5em;
1842 overflow: hidden;
1843 text-overflow: ellipsis;
1844 }
1845
1846 & div.avatar { display: block; margin-left: 1em; }
1847 }
1848 }
1849
1850 & footer.entry-meta { display: none; }
1851 }
1852
1853 & footer.entry-meta {
1854 display: flex;
1855 justify-content: flex-end;
1856
1857 & a {
1858 color: var(--friends-color-link);
1859
1860 & .dashicons { vertical-align: middle; }
1861 }
1862
1863 & .btn:hover { color: var(--friends-color-link); }
1864 }
1865
1866 & footer.comments-content {
1867 border-top: 1px solid var(--friends-color-border);
1868
1869 &.closed { display: none; }
1870
1871 & .comment-list { padding-left: 0; list-style: none; }
1872
1873 & .comment-list > li {
1874 margin-top: var(--global--spacing-vertical);
1875 margin-bottom: var(--global--spacing-vertical);
1876 }
1877
1878 & .comment-list .children {
1879 list-style: none;
1880 margin-left: 0;
1881 padding-left: 5px;
1882 border-left: 3px solid var(--friends-color-border);
1883 }
1884
1885 & .comment-list .children > li {
1886 margin-top: var(--global--spacing-vertical);
1887 margin-bottom: var(--global--spacing-vertical);
1888 }
1889
1890 @media only screen and (min-width: 482px) {
1891 & .comment-list .depth-2, & .comment-list .depth-3 {
1892 padding-left: calc(4 * var(--global--spacing-horizontal));
1893 }
1894 }
1895
1896 & .comment-reply-title { margin-top: 1em; }
1897 & .comment-reply-title small { margin-left: 1em; }
1898 & .comment-form-comment label { display: block; }
1899 & .comment-form-comment textarea { max-width: 100%; box-sizing: border-box; }
1900 }
1901 }
1902
1903 & section.followers, & section.subscriptions {
1904 & .friends-search {
1905 display: flex;
1906 flex-wrap: wrap;
1907 align-items: center;
1908 gap: .5em;
1909 margin: 0 0 1em;
1910 }
1911
1912 & .friends-search-label {
1913 display: inline-flex;
1914 align-items: center;
1915 gap: .4em;
1916 flex: 1 1 240px;
1917 min-width: 0;
1918 }
1919
1920 & .friends-search-input {
1921 flex: 1 1 auto;
1922 min-width: 0;
1923 box-sizing: border-box;
1924 padding: .35em .6em;
1925 font-size: inherit;
1926 line-height: 1.3;
1927 border: 1px solid var(--friends-color-border-strong);
1928 border-radius: 3px;
1929 background: var(--friends-color-surface);
1930 }
1931
1932 & .friends-search-input:focus {
1933 outline: 2px solid #2271b1;
1934 outline-offset: -1px;
1935 }
1936
1937 & .friends-search-clear { font-size: .9em; }
1938
1939 & ul { padding-left: 0; }
1940
1941 & ul li {
1942 list-style: none;
1943
1944 & .already-following { color: #ccc; }
1945 & img { vertical-align: middle; }
1946
1947 & .follower .ab-icon {
1948 & .dashicons.dashicons-plus, & .dashicons.dashicons-yes {
1949 color: #32c170;
1950 font-size: .5em;
1951 margin-left: -1.5em;
1952 margin-top: -2.1em;
1953 }
1954
1955 & .dashicons.dashicons-no {
1956 color: #dc1717;
1957 font-size: .5em;
1958 margin-left: -1.5em;
1959 margin-top: -2.1em;
1960 }
1961 }
1962
1963 & .form-icon.loading { margin-left: 1em; }
1964
1965 & details summary span {
1966 margin-left: .5em;
1967 border-bottom: 1px solid #ccc;
1968
1969 & span { margin-left: 0; border-bottom: 0; }
1970 }
1971
1972 & .follower-actions {
1973 display: inline-flex;
1974 flex-wrap: wrap;
1975 align-items: center;
1976 gap: .4em;
1977 }
1978
1979 & .follower-status,
1980 & .follower-action {
1981 display: inline-flex;
1982 align-items: center;
1983 border-bottom: 0;
1984 gap: .2em;
1985 line-height: 1.4;
1986 margin-left: 0;
1987 vertical-align: baseline;
1988 }
1989
1990 & .follower-status .dashicons,
1991 & .follower-action .dashicons {
1992 display: inline-flex;
1993 align-items: center;
1994 border-bottom: 0;
1995 justify-content: center;
1996 font-size: .9em;
1997 height: .9em;
1998 line-height: 1;
1999 margin: 0;
2000 vertical-align: text-bottom;
2001 width: .9em;
2002 }
2003 }
2004 }
2005
2006 & section.subscriptions {
2007 & .hidden { display: none; }
2008
2009 &.add-friend-subscriptions {
2010 display: grid;
2011 gap: 1rem;
2012
2013 & .card {
2014 margin: 0;
2015 }
2016 }
2017
2018 & .add-subscription-input {
2019 display: flex;
2020 gap: .6rem;
2021 align-items: flex-start;
2022
2023 & .form-input {
2024 flex: 1 1 auto;
2025 min-height: 5.6rem;
2026 resize: vertical;
2027 }
2028
2029 & .btn { flex: 0 0 auto; }
2030 }
2031
2032 & .opml-file-hint {
2033 color: var(--friends-color-text-muted);
2034 font-size: .75rem;
2035 margin: .6rem 0 0;
2036 }
2037
2038 & #preview-subscription:not(:empty) {
2039 margin-top: 1rem;
2040 }
2041
2042 & .subscription-preview-results {
2043 display: grid;
2044 gap: .75rem;
2045 }
2046
2047 & .bulk-controls,
2048 & .subscription-bulk-actions,
2049 & .subscription-feed-actions,
2050 & .subscription-preview-actions {
2051 display: flex;
2052 flex-wrap: wrap;
2053 gap: .4rem;
2054 align-items: center;
2055 margin-top: .8rem;
2056 }
2057
2058 & .bulk-skip-entry {
2059 margin-left: .35rem;
2060 }
2061
2062 & .feed-list {
2063 list-style: none;
2064 padding-left: 0;
2065 margin: .5em 0;
2066
2067 & li { padding: 4px 0; }
2068 }
2069
2070 & .bulk-feed-list {
2071 display: grid;
2072 gap: .6rem;
2073 margin: 1rem 0 0;
2074 }
2075
2076 & .bulk-feed-list > .bulk-feed-row {
2077 background: var(--friends-color-surface-alt);
2078 border-radius: .25rem;
2079 padding: .65rem .75rem;
2080
2081 & > label {
2082 display: block;
2083 font-weight: 600;
2084 overflow-wrap: anywhere;
2085
2086 & small {
2087 display: block;
2088 font-weight: 400;
2089 margin-top: .15rem;
2090 }
2091 }
2092 }
2093
2094 & .bulk-feed-list > .bulk-feed-row.is-reviewing > .label-for-bulkfeed,
2095 & .bulk-feed-list > .bulk-feed-row.is-reviewing > .bulk-feed-status {
2096 display: none;
2097 }
2098
2099 & .bulk-feed-review {
2100 margin: .7rem 0 0;
2101 }
2102
2103 & .feed-preview {
2104 background: var(--friends-color-surface);
2105 border-radius: .25rem;
2106 box-shadow: inset 3px 0 0 #d9def7;
2107 margin-top: 1rem;
2108 padding: .8rem;
2109
2110 & .avatar { border-radius: 50%; }
2111 }
2112
2113 & .bulk-feed-review .feed-preview {
2114 background: transparent;
2115 border-radius: 0;
2116 box-shadow: none;
2117 margin-top: 0;
2118 padding: 0;
2119 }
2120
2121 & .subscription-preview-header,
2122 & .subscribe-success {
2123 display: flex;
2124 align-items: center;
2125 gap: .6rem;
2126 }
2127
2128 & .subscription-preview-title {
2129 display: flex;
2130 flex-direction: column;
2131 min-width: 0;
2132
2133 & small {
2134 color: var(--friends-color-text-muted);
2135 overflow-wrap: anywhere;
2136 }
2137 }
2138
2139 & .subscription-preview-description {
2140 color: var(--friends-color-text-muted);
2141 margin: .6rem 0;
2142 }
2143
2144 & .subscription-feed-list {
2145 display: grid;
2146 gap: .55rem;
2147 margin-top: .8rem;
2148 }
2149
2150 & .subscription-feed-list.hidden {
2151 display: none;
2152 }
2153
2154 & .subscription-settings,
2155 & .subscription-feed-controls {
2156 display: grid;
2157 grid-template-columns: repeat(2, minmax(0, 1fr));
2158 gap: .6rem;
2159 margin-top: .7rem;
2160
2161 & label {
2162 display: grid;
2163 gap: .2rem;
2164 font-size: .7rem;
2165 font-weight: 600;
2166 }
2167
2168 & .btn {
2169 align-self: end;
2170 justify-self: start;
2171 }
2172 }
2173
2174 & .subscription-feed-url-label {
2175 grid-column: 1 / -1;
2176 }
2177
2178 & .subscription-feed-option {
2179 background: var(--friends-color-surface-alt);
2180 border-radius: .25rem;
2181 margin-top: 0;
2182 padding: .65rem;
2183
2184 & > label {
2185 display: block;
2186 font-weight: 600;
2187 overflow-wrap: anywhere;
2188
2189 & small {
2190 color: var(--friends-color-text-muted);
2191 font-weight: 400;
2192 }
2193 }
2194 }
2195
2196 & .subscription-feed-details {
2197 color: var(--friends-color-text-muted);
2198 font-size: .7rem;
2199 margin: .5rem 0 0;
2200 overflow-wrap: anywhere;
2201 }
2202
2203 & .subscription-feed-preview {
2204 background: var(--friends-color-surface);
2205 border-radius: .2rem;
2206 box-shadow: inset 0 0 0 1px #e8e8f3;
2207 margin-top: .6rem;
2208 padding: .6rem;
2209
2210 & ul {
2211 list-style: none;
2212 margin: 0;
2213 padding: 0;
2214 }
2215
2216 & li + li {
2217 margin-top: .55rem;
2218 }
2219
2220 & p {
2221 color: var(--friends-color-text-muted);
2222 font-size: .75rem;
2223 margin: .25rem 0 0;
2224 }
2225 }
2226
2227 & .subscription-feed-preview-title {
2228 display: flex;
2229 flex-direction: column;
2230 gap: .1rem;
2231
2232 & small {
2233 color: var(--friends-color-text-muted);
2234 font-size: .7rem;
2235 }
2236 }
2237
2238 & .subscription-preview-status,
2239 & .bulk-feed-status {
2240 color: var(--friends-color-text-muted);
2241 font-size: .75rem;
2242
2243 &.error { color: #b91c1c; }
2244 }
2245
2246 & .subscribe-success {
2247 & a { font-weight: bold; font-size: 1.1em; }
2248 }
2249
2250 @media (max-width: 640px) {
2251 & .add-subscription-input {
2252 flex-direction: column;
2253
2254 & .btn { width: 100%; }
2255 }
2256
2257 & .subscription-settings,
2258 & .subscription-feed-controls {
2259 grid-template-columns: 1fr;
2260 }
2261
2262 & .subscription-preview-actions .btn,
2263 & .subscription-feed-actions .btn,
2264 & .bulk-controls .btn {
2265 width: 100%;
2266 }
2267 }
2268
2269 & .subscription-item {
2270 padding: 8px 0;
2271 border-bottom: 1px solid var(--friends-color-border);
2272 display: grid;
2273 grid-template-columns: 40px 1fr;
2274 grid-template-rows: auto auto auto;
2275 column-gap: 8px;
2276 row-gap: 2px;
2277 align-items: center;
2278
2279 &:last-child { border-bottom: none; }
2280 }
2281
2282 & .subscription-link {
2283 display: contents;
2284 text-decoration: none;
2285
2286 & .avatar { border-radius: 50%; grid-row: 1 / 3; }
2287 }
2288
2289 & .subscription-info { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
2290 & .starred { color: #f5a623; }
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; }
2294 & .subscription-actions {
2295 grid-column: 2;
2296 display: flex;
2297 align-items: center;
2298 margin-top: .15rem;
2299 }
2300
2301 & .subscription-action {
2302 display: inline-flex;
2303 align-items: center;
2304 gap: .2rem;
2305 width: max-content;
2306 max-width: 100%;
2307 }
2308 }
2309
2310 & ul.friend-posts img.avatar { vertical-align: middle; margin-right: .3em; }
2311 & .form-autocomplete .form-autocomplete-input .form-input { width: auto; }
2312
2313 & .friends-reaction-picker button {
2314 padding: .5rem;
2315 margin: 0;
2316 font-size: 18px;
2317 background-color: var(--friends-color-surface);
2318 border: 0;
2319 cursor: pointer;
2320 z-index: 999999;
2321 }
2322
2323 & .friends-reaction-picker button:focus { outline: none; }
2324 & a.display-message.unread { font-weight: bold; }
2325
2326 & .friend-message .conversation .messages {
2327 max-height: 40em;
2328 overflow: auto;
2329
2330 & .wp-block-friends-message {
2331 max-width: 80%;
2332 margin: 1em;
2333 border-bottom: 1px solid var(--friends-color-border);
2334 }
2335 }
2336
2337 & .friends-dm-view {
2338 background: var(--friends-color-surface);
2339 border-top: 1px solid var(--friends-color-border);
2340 display: grid;
2341 grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
2342 height: calc(var(--friends-dm-viewport-height, 100vh) - 3.2rem);
2343 min-height: 32rem;
2344 }
2345
2346 & .friends-dm-empty {
2347 align-self: start;
2348 background: var(--friends-color-surface);
2349 border: 1px solid var(--friends-color-border);
2350 border-radius: .2rem;
2351 grid-column: 1 / -1;
2352 margin: 1rem;
2353 padding: 1rem;
2354
2355 & h3 { margin-top: 0; }
2356 & p { margin-bottom: 0; }
2357 }
2358
2359 & .friends-dm-sidebar {
2360 background: var(--friends-color-surface-muted);
2361 border-right: 1px solid var(--friends-color-border);
2362 overflow: auto;
2363 }
2364
2365 & .friends-profile-messages {
2366 overflow: hidden;
2367 padding: 0;
2368 }
2369
2370 & .friends-profile-messages-header {
2371 align-items: center;
2372 border-bottom: 1px solid var(--friends-color-border);
2373 display: flex;
2374 justify-content: space-between;
2375 padding: .65rem .7rem;
2376 }
2377
2378 & .friends-profile-messages .friends-dm-conversation,
2379 & .friends-profile-messages .friends-dm-conversation:visited {
2380 grid-template-columns: minmax(0, 1fr) auto;
2381 }
2382
2383 & .friends-dm-conversation,
2384 & .friends-dm-conversation:visited {
2385 border-bottom: 1px solid var(--friends-color-border);
2386 color: var(--friends-color-text);
2387 display: grid;
2388 gap: .25rem .5rem;
2389 grid-template-columns: 2rem minmax(0, 1fr) auto;
2390 padding: .65rem .7rem;
2391 text-decoration: none;
2392 }
2393
2394 & .friends-dm-conversation:hover,
2395 & .friends-dm-conversation:focus,
2396 & .friends-dm-conversation.is-selected {
2397 background: var(--friends-color-selected-background);
2398 color: var(--friends-color-text);
2399 text-decoration: none;
2400 }
2401
2402 & .friends-dm-conversation.is-unread .friends-dm-conversation-name,
2403 & .friends-dm-conversation.is-unread .friends-dm-conversation-preview { font-weight: 700; }
2404
2405 & .friends-dm-conversation .avatar,
2406 & .friends-dm-thread-header .avatar,
2407 & .friends-dm-message-avatar .avatar {
2408 border-radius: 50%;
2409 display: block;
2410 object-fit: cover;
2411 }
2412
2413 & .friends-dm-conversation-main {
2414 display: grid;
2415 min-width: 0;
2416 }
2417
2418 & .friends-dm-conversation-name,
2419 & .friends-dm-conversation-preview {
2420 overflow: hidden;
2421 text-overflow: ellipsis;
2422 white-space: nowrap;
2423 }
2424
2425 & .friends-dm-conversation-preview {
2426 color: var(--friends-color-text-muted);
2427 font-size: .72rem;
2428 }
2429
2430 & .friends-dm-conversation-meta {
2431 align-items: end;
2432 color: var(--friends-color-text-muted);
2433 display: flex;
2434 flex-direction: column;
2435 font-size: .65rem;
2436 gap: .25rem;
2437 }
2438
2439 & .friends-dm-unread-count {
2440 background: #d63638;
2441 border-radius: 999px;
2442 color: #fff;
2443 font-size: .6rem;
2444 font-weight: 700;
2445 line-height: 1;
2446 min-width: 1rem;
2447 padding: .2rem .3rem;
2448 text-align: center;
2449 }
2450
2451 & .friends-dm-thread {
2452 display: grid;
2453 grid-template-rows: auto minmax(0, 1fr) auto;
2454 min-width: 0;
2455 }
2456
2457 & .friends-dm-thread-header {
2458 align-items: center;
2459 border-bottom: 1px solid var(--friends-color-border);
2460 display: flex;
2461 gap: .6rem;
2462 min-height: 3.2rem;
2463 padding: .55rem .8rem;
2464
2465 & h3 {
2466 font-size: .95rem;
2467 line-height: 1.2;
2468 margin: 0;
2469 }
2470
2471 & a {
2472 font-size: .68rem;
2473 }
2474 }
2475
2476 & .friends-dm-back {
2477 display: none;
2478 }
2479
2480 & .friends-dm-messages {
2481 background: var(--friends-color-surface);
2482 overflow: auto;
2483 padding: .7rem .9rem;
2484 }
2485
2486 & .friends-dm-message {
2487 display: grid;
2488 gap: .5rem;
2489 grid-template-columns: 1.6rem minmax(0, 1fr);
2490 margin: 0 0 .9rem;
2491 }
2492
2493 & .friends-dm-message.is-consecutive-message {
2494 margin-top: -.55rem;
2495
2496 & .friends-dm-message-avatar,
2497 & .friends-dm-message-meta {
2498 visibility: hidden;
2499 }
2500
2501 & .friends-dm-message-content {
2502 margin-top: 0;
2503 }
2504 }
2505
2506 & .friends-dm-message.is-own-message .friends-dm-message-content {
2507 background: var(--friends-color-info-background);
2508 }
2509
2510 & .friends-dm-message-meta {
2511 align-items: baseline;
2512 display: flex;
2513 flex-wrap: wrap;
2514 gap: .35rem;
2515 line-height: 1.2;
2516
2517 & time {
2518 color: var(--friends-color-text-muted);
2519 font-size: .65rem;
2520 }
2521 }
2522
2523 & .friends-dm-delivery-status {
2524 color: var(--friends-color-text-muted);
2525 cursor: help;
2526 font-size: .65rem;
2527
2528 &::before {
2529 content: "·";
2530 margin-right: .35rem;
2531 }
2532
2533 &.is-failed {
2534 color: var(--friends-color-error);
2535 }
2536 }
2537
2538 & .friends-dm-delivery-icon {
2539 align-items: center;
2540 display: inline-flex;
2541 flex: 0 0 auto;
2542 height: 1rem;
2543 justify-content: center;
2544 line-height: 1;
2545 position: relative;
2546 width: 1rem;
2547
2548 &::before {
2549 border: 1.5px solid currentColor;
2550 border-radius: 50%;
2551 box-sizing: border-box;
2552 content: "";
2553 height: .9rem;
2554 margin: 0;
2555 width: .9rem;
2556 }
2557
2558 &::after {
2559 border: solid currentColor;
2560 border-width: 0 1.5px 1.5px 0;
2561 content: "";
2562 height: .42rem;
2563 left: .37rem;
2564 position: absolute;
2565 top: .22rem;
2566 transform: rotate(45deg);
2567 width: .22rem;
2568 }
2569
2570 &.is-queued::before {
2571 border-style: dotted;
2572 }
2573
2574 &.is-sending::before {
2575 border-style: dashed;
2576 }
2577
2578 &.is-failed::after {
2579 border: 0;
2580 content: "!";
2581 font-size: .65rem;
2582 font-weight: 700;
2583 height: auto;
2584 left: auto;
2585 position: absolute;
2586 top: .13rem;
2587 transform: none;
2588 width: auto;
2589 }
2590 }
2591
2592 & .friends-dm-delivery-tooltip {
2593 background: var(--friends-color-surface);
2594 border: 1px solid var(--friends-color-border);
2595 border-radius: .25rem;
2596 box-shadow: 0 .25rem .75rem rgb(0 0 0 / 16%);
2597 color: var(--friends-color-text);
2598 font-size: .75rem;
2599 line-height: 1.3;
2600 overflow-wrap: break-word;
2601 padding: .4rem .5rem;
2602 pointer-events: none;
2603 position: fixed;
2604 white-space: normal;
2605 width: min(18rem, calc(100vw - 2rem));
2606 z-index: 9999;
2607 }
2608
2609 & .friends-dm-message-content {
2610 background: var(--friends-color-surface-muted);
2611 border: 1px solid var(--friends-color-border);
2612 border-radius: .3rem;
2613 margin-top: .18rem;
2614 max-width: 48rem;
2615 padding: .45rem .55rem;
2616
2617 & > :first-child { margin-top: 0; }
2618 & > :last-child { margin-bottom: 0; }
2619 }
2620
2621 & .friends-dm-reply {
2622 background: var(--friends-color-surface-muted);
2623 border-top: 1px solid var(--friends-color-border);
2624 padding: .65rem .8rem;
2625
2626 & form.form-horizontal .form-group {
2627 display: flex;
2628 gap: .5rem;
2629 margin-bottom: .45rem;
2630 }
2631
2632 & form.form-horizontal .form-group > div:first-child {
2633 flex: 0 0 4rem;
2634 }
2635
2636 & form.form-horizontal .form-group > div:nth-child(2) {
2637 flex: 1 1 auto;
2638 max-width: none;
2639 }
2640
2641 & textarea.friends-message-message {
2642 min-height: 4.2rem;
2643 resize: vertical;
2644 }
2645
2646 & .delete-conversation {
2647 height: auto;
2648 line-height: 1.2;
2649 max-width: 100%;
2650 white-space: normal;
2651 }
2652 }
2653
2654 @media (max-width: 840px) {
2655 & .navbar-section.search.hide-mobile-search {
2656 display: none;
2657 }
2658
2659 & .friends-dm-view {
2660 grid-template-columns: 1fr;
2661 grid-template-rows: minmax(0, 1fr);
2662 height: min(calc(var(--friends-dm-viewport-height, 100vh) - 3.2rem), 48rem);
2663 min-height: 0;
2664 overflow: hidden;
2665 position: relative;
2666 }
2667
2668 & .friends-dm-sidebar {
2669 border-right: 0;
2670 grid-column: 1;
2671 grid-row: 1;
2672 height: 100%;
2673 max-height: none;
2674 min-height: 0;
2675 transform: translateX(0);
2676 transition: transform .2s ease;
2677 width: 100%;
2678 z-index: 1;
2679 }
2680
2681 & .friends-dm-thread {
2682 grid-column: 1;
2683 grid-row: 1;
2684 height: 100%;
2685 min-height: 0;
2686 overflow: hidden;
2687 transform: translateX(100%);
2688 transition: transform .2s ease;
2689 width: 100%;
2690 z-index: 2;
2691 }
2692
2693 & .friends-dm-view.is-focused-conversation .friends-dm-sidebar {
2694 transform: translateX(-100%);
2695 }
2696
2697 & .friends-dm-view.is-focused-conversation .friends-dm-thread {
2698 transform: translateX(0);
2699 }
2700
2701 & .friends-dm-back {
2702 align-items: center;
2703 border: 0;
2704 color: var(--friends-color-text);
2705 display: flex;
2706 font-size: 1.25rem;
2707 line-height: 1;
2708 text-decoration: none;
2709 }
2710
2711 & .friends-dm-messages {
2712 min-height: 0;
2713 overscroll-behavior: contain;
2714 }
2715
2716 & .friends-dm-reply {
2717 padding-bottom: calc(.65rem + env(safe-area-inset-bottom, 0px));
2718 }
2719 }
2720
2721 & .chip { background-color: var(--friends-color-surface); }
2722
2723 /* to support mastodon style tags */
2724 & .invisible {
2725 font-size: 0;
2726 line-height: 0;
2727 display: inline-block;
2728 width: 0;
2729 height: 0;
2730 position: absolute;
2731
2732 & img, & svg {
2733 margin: 0 !important;
2734 border: 0 !important;
2735 padding: 0 !important;
2736 width: 0 !important;
2737 height: 0 !important;
2738 }
2739 }
2740
2741 & .ellipsis::after { content: "\2026"; }
2742
2743 & #author-header.has-header-image {
2744 background-size: cover;
2745 background-position: center;
2746 position: relative;
2747 padding: 40px 16px 16px;
2748
2749 &::before {
2750 content: '';
2751 position: absolute;
2752 inset: 0;
2753 background: linear-gradient(to bottom, rgba(0,0,0,.3) 0%, rgba(0,0,0,.6) 100%);
2754 border-radius: inherit;
2755 }
2756
2757 & > * { position: relative; }
2758
2759 & h2, & p, & .chip, & a {
2760 color: #fff;
2761 text-shadow: 0 1px 3px rgba(0,0,0,.5);
2762 }
2763
2764 & .chip { background: rgba(255,255,255,.2); }
2765 }
2766 }
2767
2768 header.has-header-image {
2769 background-size: cover;
2770 background-position: center;
2771 position: relative;
2772 flex-wrap: wrap;
2773 border-radius: 10px;
2774 overflow: hidden;
2775
2776 &::before {
2777 content: '';
2778 position: absolute;
2779 inset: 0;
2780 background: linear-gradient(to bottom, rgba(0,0,0,.3) 0%, rgba(0,0,0,.6) 100%);
2781 }
2782
2783 & > * { position: relative; }
2784
2785 & .navbar-section.search {
2786 align-self: flex-start;
2787 margin-top: 16px;
2788 margin-right: 16px;
2789
2790 & .form-input {
2791 background: rgba(255,255,255,.2);
2792 border-color: rgba(255,255,255,.3);
2793 color: #fff;
2794
2795 &::placeholder { color: rgba(255,255,255,.7); }
2796 }
2797
2798 & .btn {
2799 background: rgba(255,255,255,.2);
2800 border-color: rgba(255,255,255,.3);
2801 color: #fff;
2802 }
2803 }
2804
2805 & #author-header {
2806 padding: 16px;
2807
2808 & h2, & p, & .chip, & a {
2809 color: #fff;
2810 text-shadow: 0 1px 3px rgba(0,0,0,.5);
2811 }
2812
2813 & .chip { background: rgba(255,255,255,.2); }
2814 }
2815 }
2816
2817 @media (max-width: 960px) {
2818 .friends-page .card {
2819 width: 100%;
2820 margin-left: 0;
2821 margin-right: 0;
2822
2823 & .card-body { padding: 1rem; }
2824 & .card-title { padding-left: 1rem; }
2825 & textarea { width: 100%; }
2826
2827 & .card-footer {
2828 padding-top: 0;
2829 padding-bottom: 1rem;
2830
2831 & div.friends-dropdown { display: inline-block; }
2832 }
2833
2834 & .card-footer a .text { display: block; font-size: 10px; line-height: 8px; }
2835 }
2836 }
2837
2838 @media (min-width: 960px) {
2839 .friends-page section.posts .card header.entry-header {
2840 padding-top: .5rem;
2841 padding-right: 1rem;
2842 padding-left: 1rem;
2843 }
2844 }
2845
2846 @media (max-width: 960px) {
2847 .friends-page section.posts .card header.entry-header div.author {
2848 max-width: 19em;
2849 }
2850 }
2851