PluginProbe
Friends / 4.3.0
Friends v4.3.0
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
friends / templates / mastodon / mastodon.css

mastodon.css in Friends 4.3.0, at templates/mastodon/mastodon.css

2,589 lines 59.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* Friends Mastodon Theme */
2
3 /* === Base === */
4 .friends-page {
5 margin: 0;
6 padding: 0;
7 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
8 font-size: 15px;
9 line-height: 1.6;
10 color-scheme: light dark;
11 color: light-dark(#282c37, #dadada);
12 background: light-dark(#f2f5f7, #1e2028);
13 overflow-wrap: break-word;
14 }
15
16 .friends-page *, .friends-page *::before, .friends-page *::after {
17 box-sizing: border-box;
18 }
19
20 .friends-page a { color: light-dark(#563acc, #c4bbff); text-decoration: none; }
21 .friends-page a:visited { color: light-dark(#563acc, #c4bbff); }
22 .friends-page a:hover { text-decoration: underline; }
23 .friends-page img { max-width: 100%; height: auto; }
24 .friends-page h1, .friends-page h2, .friends-page h3, .friends-page h4 { margin: 0; }
25 .friends-page ul, .friends-page ol { margin: 0; padding: 0; }
26 .friends-page p { margin: 0 0 .8em; }
27 .friends-page p:last-child { margin-bottom: 0; }
28 .friends-page code, .friends-page pre { overflow: auto; font-size: 13px; }
29
30 /* === 3-Column Layout === */
31 /* body is the flex container; the 3 children are the columns */
32 body.friends-page {
33 display: flex;
34 align-items: flex-start;
35 min-height: 100vh;
36 padding-top: 32px; /* wp admin bar */
37 }
38
39 /* --- Left column: user card + search --- */
40 .mastodon-left-col {
41 width: 285px;
42 flex-shrink: 0;
43 padding: 20px 16px;
44 position: sticky;
45 top: 32px;
46 height: calc(100vh - 32px);
47 overflow-y: auto;
48 background: light-dark(#f2f5f7, #1e2028);
49 }
50
51 /* --- Center column: timeline --- */
52 .mastodon-center-col {
53 flex: 1;
54 min-width: 0;
55 max-width: 630px;
56 border-left: 1px solid light-dark(#d4dde8, #393f4f);
57 border-right: 1px solid light-dark(#d4dde8, #393f4f);
58 background: light-dark(#fff, #282c37);
59 min-height: calc(100vh - 32px);
60 }
61
62 /* --- Right column: navigation sidebar --- */
63 .mastodon-right-col {
64 width: 285px;
65 flex-shrink: 0;
66 position: sticky;
67 top: 32px;
68 height: calc(100vh - 32px);
69 overflow-y: auto;
70 background: light-dark(#f2f5f7, #1e2028);
71 padding-bottom: 16px;
72 }
73
74 /* Sidebar close button (mobile only) */
75 .mastodon-sidebar-close {
76 display: none;
77 position: absolute;
78 top: 10px;
79 right: 12px;
80 font-size: 24px;
81 line-height: 1;
82 color: light-dark(#606984, #9baec8);
83 text-decoration: none;
84 z-index: 1;
85 }
86
87 .mastodon-sidebar-close:hover {
88 color: light-dark(#282c37, #fff);
89 text-decoration: none;
90 }
91
92 /* Mobile overlay */
93 .mastodon-overlay { display: none; }
94
95 /* Mobile panel: collapsible compose + search (replaces left col on small screens) */
96 .mastodon-mobile-panel {
97 display: none;
98 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
99 }
100
101 .mastodon-mobile-panel-toggle {
102 display: flex;
103 align-items: center;
104 gap: 8px;
105 padding: 10px 16px;
106 cursor: pointer;
107 color: light-dark(#282c37, #dadada);
108 font-weight: 600;
109 font-size: 14px;
110 list-style: none;
111 }
112
113 .mastodon-mobile-panel-toggle::-webkit-details-marker { display: none; }
114 .mastodon-mobile-panel-toggle::marker { display: none; content: ""; }
115
116 .mastodon-mobile-panel-toggle img {
117 width: 32px;
118 height: 32px;
119 border-radius: 4px;
120 }
121
122 .mastodon-mobile-panel-toggle span {
123 flex: 1;
124 min-width: 0;
125 overflow: hidden;
126 text-overflow: ellipsis;
127 white-space: nowrap;
128 }
129
130 .mastodon-mobile-panel-toggle .dashicons {
131 font-size: 18px;
132 width: 18px;
133 height: 18px;
134 transition: transform .2s;
135 color: light-dark(#606984, #9baec8);
136 }
137
138 .mastodon-mobile-panel[open] > .mastodon-mobile-panel-toggle .dashicons {
139 transform: rotate(180deg);
140 }
141
142 .mastodon-mobile-panel-content {
143 padding: 0 16px 12px;
144 }
145
146 @media (max-width: 1100px) {
147 .mastodon-left-col {
148 display: none;
149 }
150 .mastodon-mobile-panel {
151 display: block;
152 }
153 }
154
155 @media (max-width: 780px) {
156 body.friends-page {
157 display: block;
158 }
159 .mastodon-center-col {
160 max-width: 100%;
161 border: none;
162 min-height: 0;
163 }
164 .mastodon-right-col {
165 display: none;
166 position: fixed;
167 top: 32px;
168 right: 0;
169 width: 285px;
170 height: calc(100vh - 32px);
171 z-index: 20;
172 box-shadow: -4px 0 16px rgba(0,0,0,.2);
173 }
174 .mastodon-right-col:target {
175 display: block;
176 }
177 .mastodon-sidebar-close {
178 display: block;
179 }
180 .mastodon-overlay {
181 display: block;
182 position: fixed;
183 inset: 0;
184 z-index: 15;
185 background: rgba(0,0,0,.4);
186 opacity: 0;
187 pointer-events: none;
188 }
189 .mastodon-right-col:target ~ .mastodon-overlay {
190 opacity: 1;
191 pointer-events: auto;
192 }
193 }
194
195 /* === Left Column === */
196 .mastodon-user-card {
197 display: flex;
198 align-items: center;
199 gap: 12px;
200 padding: 8px 4px 16px;
201 margin-bottom: 4px;
202 text-decoration: none;
203 border-radius: 8px;
204 color: light-dark(#282c37, #dadada);
205 }
206
207 .mastodon-user-card:hover { background: light-dark(rgba(0,0,0,.04), rgba(255,255,255,.04)); text-decoration: none; }
208
209 .mastodon-user-card .mastodon-avatar,
210 .mastodon-user-card img {
211 width: 46px;
212 height: 46px;
213 border-radius: 8px;
214 display: block;
215 flex-shrink: 0;
216 }
217
218 .mastodon-user-info {
219 display: flex;
220 flex-direction: column;
221 min-width: 0;
222 }
223
224 .mastodon-display-name {
225 font-size: 15px;
226 font-weight: 700;
227 color: light-dark(#282c37, #dadada);
228 white-space: nowrap;
229 overflow: hidden;
230 text-overflow: ellipsis;
231 }
232
233 .mastodon-handle {
234 font-size: 13px;
235 color: light-dark(#606984, #9baec8);
236 white-space: nowrap;
237 overflow: hidden;
238 text-overflow: ellipsis;
239 }
240
241 /* Compose box in left col */
242 .mastodon-compose-form {
243 margin-bottom: 12px;
244 background: light-dark(#fff, #282c37);
245 border: 1px solid light-dark(#d4dde8, #393f4f);
246 border-radius: 8px;
247 padding: 10px 12px;
248 }
249
250 .mastodon-compose-form textarea {
251 width: 100%;
252 background: transparent;
253 border: none;
254 outline: none;
255 resize: none;
256 font-size: 14px;
257 font-family: inherit;
258 color: light-dark(#282c37, #dadada);
259 min-height: 80px;
260 }
261
262 .mastodon-compose-form textarea::placeholder {
263 color: light-dark(#606984, #9baec8);
264 }
265
266 .mastodon-compose-footer {
267 display: flex;
268 align-items: center;
269 justify-content: flex-end;
270 gap: 8px;
271 margin-top: 6px;
272 padding-top: 6px;
273 border-top: 1px solid light-dark(#d4dde8, #393f4f);
274 }
275
276 .mastodon-compose-settings {
277 color: light-dark(#606984, #9baec8);
278 display: flex;
279 align-items: center;
280 margin-right: auto;
281 }
282
283 .mastodon-compose-settings:hover { color: light-dark(#563acc, #c4bbff); text-decoration: none; }
284
285 .mastodon-compose-submit {
286 background: light-dark(#563acc, #6364ff);
287 color: #fff;
288 border: none;
289 border-radius: 100px;
290 padding: 6px 18px;
291 font-size: 14px;
292 font-weight: 600;
293 cursor: pointer;
294 font-family: inherit;
295 }
296
297 .mastodon-compose-submit:hover { background: light-dark(#4a30b0, #7475ff); }
298
299 /* @ mention dropdown */
300 .mastodon-mention-dropdown {
301 position: absolute;
302 z-index: 200;
303 list-style: none;
304 background: light-dark(#fff, #282c37);
305 border: 1px solid light-dark(#d4dde8, #393f4f);
306 border-radius: 8px;
307 box-shadow: 0 4px 16px rgba(0,0,0,.15);
308 padding: 4px 0;
309 max-height: 220px;
310 overflow-y: auto;
311 }
312
313 .mastodon-mention-dropdown li a {
314 display: flex;
315 align-items: center;
316 gap: 8px;
317 padding: 7px 12px;
318 color: light-dark(#282c37, #dadada);
319 text-decoration: none;
320 }
321
322 .mastodon-mention-dropdown li a:hover,
323 .mastodon-mention-dropdown li.active a {
324 background: light-dark(rgba(0,0,0,.04), rgba(255,255,255,.06));
325 text-decoration: none;
326 }
327
328 .mastodon-mention-dropdown li a img {
329 width: 24px;
330 height: 24px;
331 border-radius: 4px;
332 flex-shrink: 0;
333 }
334
335 .mastodon-mention-name {
336 font-size: 14px;
337 font-weight: 600;
338 }
339
340 .mastodon-mention-handle {
341 font-size: 12px;
342 color: light-dark(#606984, #9baec8);
343 margin-left: auto;
344 }
345
346 .mastodon-mention-no-results span {
347 display: block;
348 padding: 8px 12px;
349 font-size: 13px;
350 color: light-dark(#606984, #9baec8);
351 font-style: italic;
352 }
353
354 /* Search in left col */
355 .mastodon-search-form {
356 width: 100%;
357 }
358
359 .mastodon-search-wrap {
360 position: relative;
361 display: flex;
362 align-items: center;
363 }
364
365 .mastodon-search-wrap .form-icon {
366 position: absolute;
367 right: 10px;
368 top: 50%;
369 transform: translateY(-50%);
370 width: .8rem;
371 height: .8rem;
372 pointer-events: none;
373 }
374
375 .mastodon-search-input {
376 width: 100%;
377 background: light-dark(#eaedf1, #313543);
378 border: 1px solid transparent;
379 border-radius: 100px;
380 padding: 8px 16px;
381 font-size: 14px;
382 font-family: inherit;
383 color: light-dark(#282c37, #dadada);
384 outline: none;
385 }
386
387 .mastodon-search-input:focus {
388 border-color: light-dark(#563acc, #6364ff);
389 background: light-dark(#fff, #282c37);
390 }
391
392 .mastodon-search-input::placeholder {
393 color: light-dark(#606984, #9baec8);
394 }
395
396 /* === Center Column Header === */
397 .mastodon-col-header {
398 z-index: 5;
399 background: light-dark(rgba(255,255,255,.9), rgba(40,44,55,.9));
400 backdrop-filter: blur(8px);
401 -webkit-backdrop-filter: blur(8px);
402 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
403 }
404
405 .mastodon-col-title-row {
406 display: flex;
407 align-items: center;
408 justify-content: space-between;
409 padding: 14px 16px;
410 gap: 8px;
411 }
412
413 .mastodon-col-title-row h2,
414 .mastodon-col-title-row #page-title {
415 font-size: 17px;
416 font-weight: 700;
417 color: light-dark(#282c37, #fff);
418 letter-spacing: -.2px;
419 margin: 0;
420 flex: 1;
421 min-width: 0;
422 white-space: nowrap;
423 overflow: hidden;
424 text-overflow: ellipsis;
425 }
426
427 .mastodon-col-title-row #page-title a {
428 color: light-dark(#282c37, #fff);
429 }
430
431 .mastodon-col-title-row #page-title a:hover { text-decoration: none; }
432
433 .mastodon-title-avatar {
434 width: 24px;
435 height: 24px;
436 border-radius: 4px;
437 vertical-align: middle;
438 margin-right: 4px;
439 }
440
441 /* Mobile sidebar toggle */
442 .off-canvas-toggle {
443 display: none;
444 color: light-dark(#606984, #9baec8);
445 padding: 4px 8px;
446 border-radius: 100px;
447 border: none;
448 background: none;
449 cursor: pointer;
450 margin-right: 4px;
451 }
452
453 @media (max-width: 780px) {
454 .off-canvas-toggle {
455 display: inline-flex;
456 align-items: center;
457 }
458 .mastodon-col-header {
459 position: static;
460 }
461 }
462
463 /* Chips area */
464 .mastodon-chips-area {
465 padding: 12px 16px 14px;
466 border-top: 1px solid light-dark(#d4dde8, #393f4f);
467 }
468
469 /* Hide the title headings inside the chips area — we've already shown the title above */
470 .mastodon-chips-area h2,
471 .mastodon-chips-area #page-title,
472 .mastodon-chips-area #author-header > h2,
473 .mastodon-chips-area #main-header > h2 {
474 display: none;
475 }
476
477 /* === Chips === */
478 .friends-page .chip {
479 display: inline-block;
480 background: light-dark(rgba(86,58,204,.08), rgba(99,100,255,.15));
481 border: none;
482 border-radius: 100px;
483 padding: 4px 12px;
484 margin: 3px 2px;
485 font-size: 13px;
486 color: light-dark(#563acc, #c4bbff);
487 line-height: 1.6;
488 text-decoration: none;
489 white-space: nowrap;
490 cursor: pointer;
491 }
492
493 .friends-page a.chip:visited { color: light-dark(#563acc, #c4bbff); }
494 .friends-page .chip:hover { background: light-dark(rgba(86,58,204,.15), rgba(99,100,255,.25)); text-decoration: none; }
495 .friends-page span.chip { cursor: default; }
496 .friends-page .chip.activitypub-follower-check.is-following {
497 background: light-dark(#e4f6e8, rgba(46,160,67,.22));
498 color: light-dark(#116329, #8ddb8c);
499 }
500 .friends-page .chip.activitypub-follower-check.is-not-following {
501 background: light-dark(#fff4d6, rgba(210,153,34,.22));
502 color: light-dark(#7a4d00, #eac55f);
503 }
504 .friends-page .chip.activitypub-follower-check.is-error {
505 background: light-dark(#fde7e9, rgba(218,54,51,.22));
506 color: light-dark(#8a2424, #ff9b9b);
507 }
508
509 /* Description text in author header chips area */
510 .mastodon-chips-area p {
511 font-size: 14px;
512 color: light-dark(#606984, #9baec8);
513 margin-bottom: 10px;
514 }
515
516 /* === Timeline === */
517 .friends-page section.posts {
518 padding: 0;
519 margin: 0;
520 background: light-dark(#fff, #282c37);
521 }
522
523 .friends-page .posts > .friends-empty-state {
524 border-bottom: 1px solid light-dark(#c8d0db, #393f4f);
525 background: light-dark(#fff, #282c37);
526 }
527
528 .friends-page .posts > .friends-empty-state > .card-body {
529 padding: 20px 16px;
530 }
531
532 .friends-page .posts > .friends-empty-state h1 {
533 font-size: 22px;
534 line-height: 1.3;
535 margin-bottom: 12px;
536 }
537
538 .friends-page .posts > .friends-empty-state ul,
539 .friends-page .posts > .friends-empty-state ol {
540 margin: 0 0 .8em;
541 padding-left: 1.25rem;
542 }
543
544 .friends-page .posts > .friends-empty-state li {
545 margin-bottom: .6em;
546 }
547
548 /* === Individual Status Card === */
549 .friends-page .posts article.card {
550 position: relative;
551 padding: 16px 16px 16px 78px;
552 border: none;
553 border-bottom: 1px solid light-dark(#c8d0db, #393f4f);
554 border-radius: 0;
555 background: light-dark(#fff, #282c37);
556 box-shadow: none;
557 transition: background .1s;
558 }
559
560 .friends-page .posts article.card:hover {
561 background: light-dark(#fafbfc, #2c3040);
562 }
563
564 .friends-page .posts article.card:last-child {
565 border-bottom: none;
566 }
567
568 /* === Card Header (the <header class="entry-header card-header"> from the partial) === */
569 .friends-page .posts .card-header {
570 display: flex;
571 align-items: flex-start;
572 justify-content: space-between;
573 padding: 0;
574 margin-bottom: 8px;
575 gap: 8px;
576 }
577
578 /* Avatar: absolute on the left */
579 .friends-page .posts .card-header > div.avatar {
580 position: absolute;
581 left: 16px;
582 top: 16px;
583 flex-shrink: 0;
584 }
585
586 .friends-page .posts .card-header .avatar a,
587 .friends-page .posts .card-header .avatar .author-avatar {
588 display: block;
589 }
590
591 .friends-page .posts .card-header .avatar img {
592 width: 46px;
593 height: 46px;
594 max-width: none;
595 border-radius: 8px;
596 display: block;
597 }
598
599 .friends-page .posts .card-header .avatar img.avatar-overlay {
600 position: absolute;
601 bottom: -4px;
602 right: -4px;
603 width: 22px;
604 height: 22px;
605 border-radius: 4px;
606 border: 2px solid light-dark(#fff, #282c37);
607 }
608
609 /* Post meta: author · timestamp on one line, Mastodon-style */
610 .friends-page .posts .post-meta {
611 flex: 1;
612 min-width: 0;
613 display: flex;
614 align-items: baseline;
615 flex-wrap: wrap;
616 gap: 0 6px;
617 line-height: 1.4;
618 }
619
620 .friends-page .posts .author {
621 font-weight: 700;
622 font-size: 15px;
623 color: light-dark(#282c37, #fff);
624 white-space: nowrap;
625 overflow: hidden;
626 text-overflow: ellipsis;
627 max-width: 100%;
628 }
629
630 .friends-page .posts .author a {
631 color: light-dark(#282c37, #fff);
632 font-weight: 700;
633 }
634
635 .friends-page .posts .author a:hover { text-decoration: underline; }
636 .friends-page .posts .author strong { font-weight: 700; }
637
638 /* Separator dot between author and timestamp */
639 .friends-page .posts .author::after {
640 content: ' ·';
641 color: light-dark(#9baec8, #9baec8);
642 font-weight: 400;
643 margin-left: 2px;
644 }
645
646 .friends-page .posts .permalink {
647 font-size: 13px;
648 color: light-dark(#606984, #9baec8);
649 white-space: nowrap;
650 overflow: hidden;
651 text-overflow: ellipsis;
652 }
653
654 .friends-page .posts .permalink a { color: light-dark(#606984, #9baec8); }
655 .friends-page .posts .permalink a:hover { text-decoration: underline; }
656 .friends-page .posts .reading-time { color: light-dark(#606984, #9baec8); font-size: 13px; }
657
658 /* Overflow: the ··· post menu, right side of header row */
659 .friends-page .posts .overflow {
660 flex-shrink: 0;
661 display: flex;
662 align-items: center;
663 opacity: 0;
664 transition: opacity .1s;
665 }
666
667 .friends-page .posts article.card:hover .overflow {
668 opacity: 1;
669 }
670
671 .friends-page .collapse-post { display: none; }
672 .friends-page .posts:not(.all-collapsed) .teaser { display: none; }
673
674 /* === Post Title === */
675 .friends-page .posts .card-title {
676 margin-bottom: 6px;
677 }
678
679 /* The header partial itself is now a direct child of <article> so it needs the same indent */
680 .friends-page .posts article.card > header.card-header {
681 margin-bottom: 6px;
682 }
683
684 .friends-page .posts .card-title a {
685 font-size: 16px;
686 font-weight: 700;
687 color: light-dark(#282c37, #fff);
688 line-height: 1.4;
689 }
690
691 .friends-page .posts .card-title a:visited { color: light-dark(#282c37, #fff); }
692 .friends-page .posts .card-title a:hover { text-decoration: underline; }
693 .friends-page .posts h4 a { font-size: 15px; font-weight: 700; }
694
695 /* === Post Body === */
696 .friends-page .posts .card-body,
697 .friends-page .posts .entry-content {
698 font-size: 15px;
699 line-height: 1.7;
700 color: light-dark(#282c37, #dadada);
701 padding: 0;
702 }
703
704 .friends-page .posts .card-body p,
705 .friends-page .posts .entry-content p {
706 margin: 0 0 .8em;
707 }
708
709 .friends-page .posts .card-body p:last-child,
710 .friends-page .posts .entry-content p:last-child {
711 margin-bottom: 0;
712 }
713
714 .friends-page .posts .card-body img,
715 .friends-page .posts .entry-content img {
716 max-width: 100%;
717 border-radius: 8px;
718 height: auto;
719 margin: 8px 0;
720 display: block;
721 }
722
723 /* Image gallery: grid layout for multiple images */
724 .friends-page .posts .card-body .friends-gallery {
725 display: grid;
726 grid-template-columns: repeat(2, 1fr);
727 gap: 4px;
728 border-radius: 8px;
729 overflow: hidden;
730 margin: 8px 0;
731 }
732
733 .friends-page .posts .card-body .friends-gallery img {
734 width: 100%;
735 height: 100%;
736 object-fit: cover;
737 margin: 0;
738 border-radius: 0;
739 }
740
741 /* Single image in gallery: full width */
742 .friends-page .posts .card-body .friends-gallery.gallery-1 {
743 grid-template-columns: 1fr;
744 }
745
746 /* 3 images: first image spans full width */
747 .friends-page .posts .card-body .friends-gallery.gallery-3 img:first-child {
748 grid-column: 1 / -1;
749 }
750
751 /* === Post Footer / Action Bar === */
752 .friends-page .posts .card-footer,
753 .friends-page .posts footer.entry-meta {
754 display: flex;
755 align-items: center;
756 flex-wrap: wrap;
757 gap: 2px;
758 padding: 0;
759 border-top: none;
760 background: transparent;
761 margin-top: 12px;
762 }
763
764 .friends-page .posts .card-footer a,
765 .friends-page .posts .card-footer .btn-link {
766 display: inline-flex;
767 align-items: center;
768 gap: 4px;
769 color: light-dark(#606984, #9baec8);
770 font-size: 13px;
771 padding: 5px 10px;
772 border-radius: 100px;
773 background: none;
774 border: none;
775 cursor: pointer;
776 transition: color .1s, background .1s;
777 text-decoration: none;
778 }
779
780 .friends-page .posts .card-footer a:hover,
781 .friends-page .posts .card-footer .btn-link:hover {
782 color: light-dark(#563acc, #6364ff);
783 background: light-dark(rgba(86,58,204,.08), rgba(99,100,255,.12));
784 text-decoration: none;
785 }
786
787 .friends-page .posts .card-footer .dashicons {
788 font-size: 16px;
789 width: 16px;
790 height: 16px;
791 vertical-align: text-bottom;
792 }
793
794 /* Reaction buttons */
795 .friends-page button.friends-reaction,
796 .friends-page button.friends-reaction-picker {
797 display: inline-flex;
798 align-items: center;
799 gap: 4px;
800 background: none;
801 border: none;
802 border-radius: 100px;
803 padding: 5px 10px;
804 font-size: 13px;
805 color: light-dark(#606984, #9baec8);
806 cursor: pointer;
807 transition: color .1s, background .1s;
808 font-family: inherit;
809 }
810
811 .friends-page button.friends-reaction:hover,
812 .friends-page button.friends-reaction-picker:hover {
813 color: #ca8f04;
814 background: light-dark(rgba(202,143,4,.1), rgba(202,143,4,.12));
815 }
816
817 .friends-page button.friends-reaction.pressed { color: #ca8f04; }
818
819 /* === Boost / Reblog Indicator === */
820 .friends-page .posts .reblogged-by,
821 .friends-page .posts .reblog-info {
822 font-size: 13px;
823 color: light-dark(#606984, #9baec8);
824 margin-bottom: 8px;
825 display: flex;
826 align-items: center;
827 gap: 6px;
828 padding-left: 30px;
829 }
830
831 /* Boost indicator: keep text light-weight to distinguish from post author */
832 .friends-page .posts .boosted {
833 font-weight: 400;
834 }
835
836 .friends-page .activitypub-custom-emoji {
837 display: inline-block;
838 width: auto;
839 max-width: 1.5em;
840 height: 1em;
841 max-height: 1em;
842 margin: 0 0.05em;
843 object-fit: contain;
844 vertical-align: -0.15em;
845 }
846
847 /* Follow button on boosts: hidden by default, shown on hover (desktop only) */
848 .friends-page .posts .boosted .follow-button,
849 .friends-page .posts .boosted .follow-button span.name {
850 display: none;
851 }
852
853 .friends-page .posts .boosted:hover .follow-button {
854 display: inline;
855 }
856
857 @media (max-width: 780px) {
858 .friends-page .posts .boosted:hover .follow-button {
859 display: none;
860 }
861 }
862
863 /* === Comments === */
864 .friends-page .comments-content {
865 padding: 12px 0 12px 16px;
866 margin: 12px 0;
867 font-size: 14px;
868 }
869
870 .friends-page .comments-content textarea {
871 max-width: 100%;
872 box-sizing: border-box;
873 }
874
875 .friends-page .comments-content.closed { display: none; }
876 .friends-page .comments-content.open { display: block; }
877
878 .friends-page .comments-content h5 {
879 font-size: 13px;
880 font-weight: 700;
881 color: light-dark(#606984, #9baec8);
882 margin: 0 0 8px;
883 }
884
885 .friends-page .comments-content .comment-list {
886 list-style: none;
887 padding: 0;
888 margin: 0;
889 }
890
891 .friends-page .comments-content .comment {
892 padding: 6px 0;
893 border-bottom: 1px solid light-dark(#e6ebf0, #393f4f);
894 }
895
896 /* === Right Column — Mastodon nav style === */
897 .mastodon-brand {
898 padding: 14px 16px 10px;
899 margin-bottom: 2px;
900 }
901
902 .mastodon-brand h2 {
903 font-size: 22px;
904 font-weight: 800;
905 letter-spacing: -.5px;
906 color: light-dark(#563acc, #6364ff);
907 }
908
909 .mastodon-brand a { color: light-dark(#563acc, #6364ff); }
910 .mastodon-brand a:hover { text-decoration: none; }
911
912 .mastodon-right-nav {
913 padding: 4px 0;
914 }
915
916 /* Keep sidebar dashicons from blowing up */
917 .mastodon-right-nav .dashicons,
918 .mastodon-right-col .dashicons {
919 font-size: 16px !important;
920 width: 16px !important;
921 height: 16px !important;
922 vertical-align: text-bottom;
923 flex-shrink: 0;
924 }
925
926 /* Widget h5 headers (e.g. Refresh) — left-align with nav, no extra vertical padding */
927 .mastodon-right-col .friends-widget h5 {
928 display: flex;
929 align-items: center;
930 gap: 8px;
931 padding: 8px 16px 0;
932 margin: 0;
933 font-size: 14px;
934 font-weight: 600;
935 color: light-dark(#282c37, #dadada);
936 }
937
938 /* h5 inside accordion summaries — summary already provides padding */
939 .mastodon-right-col .friends-widget .accordion-header h5,
940 .mastodon-right-col .friends-widget summary h5 {
941 padding: 16px 0 6px;
942 margin: 8px 0 0;
943 border-top: 1px solid light-dark(#d9e1e8, #393f4f);
944 }
945
946 .mastodon-right-col .friends-widget .form-group {
947 padding: 0 16px;
948 margin-bottom: 8px;
949 }
950
951 .mastodon-right-customize {
952 padding: 12px 16px 0;
953 font-size: 12px;
954 }
955
956 .mastodon-right-customize a {
957 color: light-dark(#606984, #9baec8);
958 font-size: 12px;
959 }
960
961 /* Sidebar accordion section headers */
962 .friends-page .accordion,
963 .mastodon-right-col details {
964 border: none;
965 margin: 0;
966 padding: 0;
967 }
968
969 .friends-page .accordion summary,
970 .friends-page .accordion .accordion-header {
971 display: block;
972 padding: 0 16px;
973 font-size: 11px;
974 font-weight: 700;
975 color: light-dark(#606984, #9baec8);
976 text-transform: uppercase;
977 letter-spacing: .8px;
978 cursor: pointer;
979 list-style: none;
980 }
981
982 .friends-page .accordion summary::-webkit-details-marker { display: none; }
983 .friends-page .accordion summary::marker { display: none; content: ''; }
984
985 .friends-page .friends-widget .dashicons {
986 font-size: 14px;
987 width: 14px;
988 height: 14px;
989 vertical-align: text-bottom;
990 }
991
992 /* Sidebar nav menu */
993 .friends-page .menu, .friends-page .menu-nav {
994 list-style: none;
995 padding: 0;
996 margin: 0;
997 }
998
999 .friends-page .menu-item,
1000 .friends-page .friend-list .menu-item {
1001 margin: 0;
1002 }
1003
1004 .friends-page .menu-item a,
1005 .friends-page .friend-list .menu-item a {
1006 display: flex !important;
1007 align-items: center;
1008 gap: 10px;
1009 padding: 10px 16px;
1010 color: light-dark(#282c37, #dadada);
1011 font-size: 15px;
1012 font-weight: 500;
1013 line-height: 1.3;
1014 text-decoration: none;
1015 transition: background .1s;
1016 white-space: nowrap;
1017 overflow: hidden;
1018 text-overflow: ellipsis;
1019 }
1020
1021 .friends-page .menu-item a:hover {
1022 background: light-dark(rgba(86,58,204,.06), rgba(99,100,255,.1));
1023 text-decoration: none;
1024 }
1025
1026 .friends-page .friend-stats .menu-item a {
1027 font-size: 14px;
1028 padding: 7px 16px;
1029 }
1030
1031 .friends-page .off-canvas-sidebar .description,
1032 .friends-page .off-canvas-sidebar p,
1033 .mastodon-right-col .description,
1034 .mastodon-right-col p {
1035 font-size: 12px;
1036 color: light-dark(#606984, #9baec8);
1037 padding: 2px 16px;
1038 margin: 0 0 4px;
1039 line-height: 1.4;
1040 }
1041
1042 /* === Inputs & Forms === */
1043 .friends-page .form-input,
1044 .friends-page input[type="text"] {
1045 background: light-dark(#eaedf1, #313543);
1046 border: 1px solid transparent;
1047 border-radius: 100px;
1048 padding: 8px 16px;
1049 font-size: 14px;
1050 font-family: inherit;
1051 color: light-dark(#282c37, #dadada);
1052 outline: none;
1053 }
1054
1055 .friends-page .form-input:focus,
1056 .friends-page input[type="text"]:focus {
1057 border-color: light-dark(#563acc, #6364ff);
1058 background: light-dark(#fff, #282c37);
1059 }
1060
1061 .friends-page .btn,
1062 .friends-page button {
1063 font-family: inherit;
1064 font-size: 14px;
1065 cursor: pointer;
1066 }
1067
1068 .friends-page .btn {
1069 border-radius: 100px;
1070 padding: 7px 18px;
1071 font-weight: 500;
1072 border: none;
1073 transition: background .1s;
1074 background: light-dark(#eaedf1, #313543);
1075 color: light-dark(#282c37, #dadada);
1076 }
1077
1078 .friends-page .btn:hover { background: light-dark(#d4dde8, #3d4456); box-shadow: none; }
1079
1080 .friends-page .btn-primary {
1081 background: light-dark(#563acc, #6364ff);
1082 color: #fff;
1083 }
1084
1085 .friends-page .btn-primary:hover { background: light-dark(#4926a5, #7475ff); }
1086
1087 .friends-page .btn-link {
1088 background: none;
1089 border: none;
1090 cursor: pointer;
1091 padding: 5px 10px;
1092 color: light-dark(#606984, #9baec8);
1093 border-radius: 100px;
1094 }
1095
1096 .friends-page .btn-link:hover {
1097 background: light-dark(rgba(86,58,204,.08), rgba(99,100,255,.12));
1098 color: light-dark(#563acc, #6364ff);
1099 box-shadow: none;
1100 }
1101
1102 .friends-page .input-group { display: flex; }
1103
1104 .friends-page .input-group .form-input,
1105 .friends-page .input-group input[type="text"] {
1106 flex: 1;
1107 border-radius: 100px 0 0 100px;
1108 }
1109
1110 .friends-page .input-group .input-group-btn,
1111 .friends-page .input-group .btn {
1112 border-radius: 0 100px 100px 0;
1113 }
1114
1115 .friends-page .form-autocomplete { position: relative; }
1116
1117 .friends-page .form-autocomplete .menu {
1118 position: absolute;
1119 top: 100%;
1120 left: 0;
1121 right: 0;
1122 background: light-dark(#fff, #313543);
1123 border: 1px solid light-dark(#d4dde8, #393f4f);
1124 border-radius: 8px;
1125 z-index: 100;
1126 box-shadow: 0 8px 24px rgba(0,0,0,.2);
1127 overflow: hidden;
1128 padding: 0;
1129 }
1130
1131 .friends-page .form-autocomplete .menu .menu-item {
1132 padding: 0;
1133 margin: 0;
1134 }
1135
1136 .friends-page .form-autocomplete .menu .menu-item + .menu-item {
1137 margin-top: 0;
1138 }
1139
1140 .friends-page .form-autocomplete .menu .menu-item > a {
1141 display: block !important;
1142 white-space: normal;
1143 margin: 0;
1144 padding: 8px 12px;
1145 border-radius: 0;
1146 color: light-dark(#282c37, #dadada);
1147 font-size: 14px;
1148 font-weight: normal;
1149 line-height: 1.4;
1150 }
1151
1152 .friends-page .form-autocomplete .menu .menu-item > a:hover,
1153 .friends-page .form-autocomplete .menu .menu-item > a:focus,
1154 .friends-page .form-autocomplete .menu .menu-item > a:active {
1155 background: light-dark(rgba(86,58,204,.06), rgba(99,100,255,.1));
1156 color: light-dark(#282c37, #dadada);
1157 outline: none;
1158 }
1159
1160 .friends-page .form-autocomplete .menu .menu-item > a > .ab-icon {
1161 margin-right: 6px;
1162 vertical-align: middle;
1163 }
1164
1165 .friends-page .form-autocomplete .menu .menu-item > a small {
1166 margin-left: .3em;
1167 color: light-dark(#606984, #9baec8);
1168 }
1169
1170 .friends-page .form-autocomplete .menu .menu-item > a mark {
1171 background: light-dark(rgba(86,58,204,.15), rgba(99,100,255,.25));
1172 color: inherit;
1173 border: none;
1174 border-radius: 2px;
1175 padding: 0 1px;
1176 }
1177
1178 /* === Dropdown Menus === */
1179 .friends-page .friends-dropdown {
1180 position: relative;
1181 display: inline-block;
1182 }
1183
1184 .friends-page .friends-dropdown .menu {
1185 display: none;
1186 position: absolute;
1187 top: 100%;
1188 right: 0;
1189 left: auto;
1190 background: light-dark(#fff, #313543);
1191 border: 1px solid light-dark(#d4dde8, #393f4f);
1192 border-radius: 8px;
1193 box-shadow: 0 8px 24px rgba(0,0,0,.2);
1194 z-index: 100;
1195 min-width: 200px;
1196 overflow: hidden;
1197 }
1198
1199 .friends-page .friends-dropdown.active .menu,
1200 .friends-page .friends-dropdown .menu:hover {
1201 display: block;
1202 }
1203
1204 .friends-page .friends-dropdown .menu .menu-item a {
1205 padding: 10px 16px;
1206 font-size: 14px;
1207 }
1208
1209 .friends-page .friends-dropdown-right .menu {
1210 left: auto;
1211 right: 0;
1212 }
1213
1214 /* === Author Header (on single-author pages) === */
1215 .friends-page #author-header,
1216 .friends-page .author-header {
1217 padding: 16px;
1218 }
1219
1220 .friends-page #author-header.has-header-image {
1221 background-size: cover;
1222 background-position: center;
1223 position: relative;
1224 padding: 40px 16px 16px;
1225 }
1226
1227 .friends-page #author-header.has-header-image::before {
1228 content: '';
1229 position: absolute;
1230 inset: 0;
1231 background: linear-gradient(to bottom, rgba(0,0,0,.3) 0%, rgba(0,0,0,.6) 100%);
1232 border-radius: inherit;
1233 }
1234
1235 .friends-page #author-header.has-header-image > * {
1236 position: relative;
1237 }
1238
1239 .friends-page #author-header.has-header-image h2,
1240 .friends-page #author-header.has-header-image p,
1241 .friends-page #author-header.has-header-image .chip,
1242 .friends-page #author-header.has-header-image a {
1243 color: #fff;
1244 text-shadow: 0 1px 3px rgba(0,0,0,.5);
1245 }
1246
1247 .friends-page #author-header.has-header-image .chip {
1248 background: rgba(255,255,255,.2);
1249 }
1250
1251 .friends-page .author-header .avatar img {
1252 border-radius: 8px;
1253 vertical-align: middle;
1254 margin-right: 8px;
1255 margin-bottom: 10px;
1256 }
1257
1258 /* Add spacing after the description text, before chips */
1259 .friends-page #author-header > p {
1260 margin-bottom: 12px;
1261 }
1262
1263 /* Folder dropdown: blend into chip style */
1264 .friends-page .friends-folder-selector select {
1265 appearance: none;
1266 -webkit-appearance: none;
1267 background: transparent;
1268 border: none;
1269 color: inherit;
1270 font: inherit;
1271 font-size: 13px;
1272 cursor: pointer;
1273 padding: 0;
1274 margin: 0;
1275 }
1276
1277 .friends-page .friends-folder-selector select:focus {
1278 outline: none;
1279 }
1280
1281 /* Message section styling */
1282 .friends-page .card.mt-2.p-2 {
1283 padding: 16px 16px 16px 78px !important;
1284 margin: 0 !important;
1285 border: none;
1286 border-bottom: 1px solid light-dark(#c8d0db, #393f4f);
1287 border-radius: 0;
1288 background: light-dark(#fff, #282c37);
1289 box-shadow: none;
1290 }
1291
1292 .friends-page #friends-send-new-message {
1293 padding: 16px !important;
1294 }
1295
1296 /* Mastodon theme: messages */
1297 .friends-page .card.mt-2.p-2:has(.friend-message) {
1298 background: transparent;
1299 border: none;
1300 box-shadow: none;
1301 padding: 0 !important;
1302 margin: 0;
1303 }
1304
1305 .friends-page .card.mt-2.p-2:has(.friend-message) > strong {
1306 display: block;
1307 padding: 12px 16px;
1308 font-size: 15px;
1309 color: light-dark(#282c37, #dadada);
1310 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1311 }
1312
1313 .friends-page .friend-message {
1314 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1315 }
1316
1317 .friends-page a.display-message {
1318 display: block;
1319 padding: 12px 16px;
1320 color: light-dark(#282c37, #dadada);
1321 font-size: 14px;
1322 transition: background .15s;
1323 }
1324
1325 .friends-page a.display-message:hover {
1326 background: light-dark(#f2f5f7, #313543);
1327 text-decoration: none;
1328 }
1329
1330 .friends-page a.display-message.unread {
1331 font-weight: 700;
1332 border-left: 3px solid light-dark(#563acc, #6364ff);
1333 padding-left: 13px;
1334 }
1335
1336 .friends-page .friend-message .conversation {
1337 background: light-dark(#f2f5f7, #1e2028);
1338 border-top: 1px solid light-dark(#d4dde8, #393f4f);
1339 }
1340
1341 .friends-page .friend-message .conversation .messages {
1342 max-height: 50vh;
1343 overflow-y: auto;
1344 padding: 8px 0;
1345 }
1346
1347 .friends-page .friend-message .conversation .message {
1348 padding: 10px 16px;
1349 font-size: 14px;
1350 color: light-dark(#606984, #9baec8);
1351 }
1352
1353 .friends-page .friend-message .conversation .message .author {
1354 font-weight: 600;
1355 color: light-dark(#282c37, #dadada);
1356 }
1357
1358 .friends-page .friend-message .conversation .message .time {
1359 font-size: 12px;
1360 }
1361
1362 .friends-page .friend-message .conversation .message blockquote {
1363 margin: 6px 0 0;
1364 padding: 10px 14px;
1365 background: light-dark(#fff, #282c37);
1366 border-radius: 8px;
1367 border: 1px solid light-dark(#d4dde8, #393f4f);
1368 border-left: none;
1369 color: light-dark(#282c37, #dadada);
1370 font-size: 15px;
1371 }
1372
1373 .friends-page .friend-message .conversation .message blockquote p:last-child {
1374 margin-bottom: 0;
1375 }
1376
1377 .friends-page .friend-message .conversation .form-horizontal {
1378 padding: 12px 16px;
1379 border-top: 1px solid light-dark(#d4dde8, #393f4f);
1380 }
1381
1382 .friends-page .friend-message .conversation .form-horizontal .form-input {
1383 background: light-dark(#fff, #282c37);
1384 border: 1px solid light-dark(#d4dde8, #393f4f);
1385 border-radius: 8px;
1386 padding: 8px 12px;
1387 font-size: 14px;
1388 font-family: inherit;
1389 color: light-dark(#282c37, #dadada);
1390 width: 100%;
1391 }
1392
1393 .friends-page .friend-message .conversation .form-horizontal .form-input:focus {
1394 border-color: light-dark(#563acc, #6364ff);
1395 outline: none;
1396 }
1397
1398 .friends-page .friend-message .conversation .form-horizontal textarea.form-input {
1399 min-height: 60px;
1400 resize: vertical;
1401 }
1402
1403 .friends-page .friend-message .conversation .form-horizontal .btn {
1404 background: light-dark(#563acc, #6364ff);
1405 color: #fff;
1406 border: none;
1407 border-radius: 100px;
1408 padding: 6px 18px;
1409 font-size: 14px;
1410 font-weight: 600;
1411 cursor: pointer;
1412 font-family: inherit;
1413 }
1414
1415 .friends-page .friend-message .conversation .form-horizontal .btn:hover {
1416 background: light-dark(#4a30b0, #7475ff);
1417 }
1418
1419 .friends-page .friend-message .conversation .form-horizontal .btn.delete-conversation {
1420 background: transparent;
1421 color: light-dark(#df405a, #e87c8e);
1422 font-size: 12px;
1423 padding: 4px 8px;
1424 }
1425
1426 .friends-page .friend-message .conversation .form-horizontal .form-group {
1427 margin-bottom: 8px;
1428 }
1429
1430 .friends-page .friend-message .conversation .form-horizontal .form-label {
1431 font-size: 13px;
1432 color: light-dark(#606984, #9baec8);
1433 font-weight: 600;
1434 }
1435
1436 /* Mastodon theme: direct messages */
1437 .friends-page .friends-dm-view {
1438 background: light-dark(#fff, #282c37);
1439 border-top: 1px solid light-dark(#d4dde8, #393f4f);
1440 display: grid;
1441 grid-template-columns: minmax(260px, 340px) minmax(0, 1fr);
1442 height: calc(100vh - 56px);
1443 min-height: 32rem;
1444 }
1445
1446 .friends-page .friends-dm-sidebar {
1447 background: light-dark(#f2f5f7, #1e2028);
1448 border-right: 1px solid light-dark(#d4dde8, #393f4f);
1449 overflow: auto;
1450 }
1451
1452 .friends-page .friends-profile-messages {
1453 background: transparent;
1454 border: none;
1455 box-shadow: none;
1456 overflow: hidden;
1457 padding: 0 !important;
1458 }
1459
1460 .friends-page .friends-profile-messages-header {
1461 align-items: center;
1462 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1463 display: flex;
1464 justify-content: space-between;
1465 padding: 12px 16px;
1466 }
1467
1468 .friends-page .friends-profile-messages-header strong {
1469 color: light-dark(#282c37, #dadada);
1470 font-size: 15px;
1471 }
1472
1473 .friends-page .friends-profile-messages .friends-dm-conversation,
1474 .friends-page .friends-profile-messages .friends-dm-conversation:visited {
1475 grid-template-columns: minmax(0, 1fr) auto;
1476 }
1477
1478 .friends-page .friends-dm-conversation,
1479 .friends-page .friends-dm-conversation:visited {
1480 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1481 color: light-dark(#282c37, #dadada);
1482 display: grid;
1483 gap: 4px 10px;
1484 grid-template-columns: 40px minmax(0, 1fr) auto;
1485 padding: 12px 16px;
1486 text-decoration: none;
1487 }
1488
1489 .friends-page .friends-dm-conversation:hover,
1490 .friends-page .friends-dm-conversation:focus,
1491 .friends-page .friends-dm-conversation.is-selected {
1492 background: light-dark(#e6ebf0, #313543);
1493 text-decoration: none;
1494 }
1495
1496 .friends-page .friends-dm-conversation.is-unread .friends-dm-conversation-name,
1497 .friends-page .friends-dm-conversation.is-unread .friends-dm-conversation-preview {
1498 font-weight: 700;
1499 }
1500
1501 .friends-page .friends-dm-conversation .avatar,
1502 .friends-page .friends-dm-thread-header .avatar,
1503 .friends-page .friends-dm-message-avatar .avatar {
1504 border-radius: 8px;
1505 display: block;
1506 object-fit: cover;
1507 }
1508
1509 .friends-page .friends-dm-conversation-main {
1510 display: grid;
1511 min-width: 0;
1512 }
1513
1514 .friends-page .friends-dm-conversation-name,
1515 .friends-page .friends-dm-conversation-preview {
1516 overflow: hidden;
1517 text-overflow: ellipsis;
1518 white-space: nowrap;
1519 }
1520
1521 .friends-page .friends-dm-conversation-preview,
1522 .friends-page .friends-dm-conversation-meta,
1523 .friends-page .friends-dm-message-meta time {
1524 color: light-dark(#606984, #9baec8);
1525 }
1526
1527 .friends-page .friends-dm-conversation-meta {
1528 align-items: end;
1529 display: flex;
1530 flex-direction: column;
1531 font-size: 12px;
1532 gap: 5px;
1533 }
1534
1535 .friends-page .friends-dm-unread-count {
1536 background: light-dark(#563acc, #6364ff);
1537 border-radius: 999px;
1538 color: #fff;
1539 font-size: 11px;
1540 font-weight: 700;
1541 line-height: 1;
1542 min-width: 20px;
1543 padding: 4px 6px;
1544 text-align: center;
1545 }
1546
1547 .friends-page .friends-dm-thread {
1548 display: grid;
1549 grid-template-rows: auto minmax(0, 1fr) auto;
1550 min-width: 0;
1551 }
1552
1553 .friends-page .friends-dm-thread-header {
1554 align-items: center;
1555 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1556 display: flex;
1557 gap: 12px;
1558 min-height: 64px;
1559 padding: 10px 16px;
1560 }
1561
1562 .friends-page .friends-dm-thread-header h3 {
1563 color: light-dark(#282c37, #dadada);
1564 font-size: 17px;
1565 line-height: 1.2;
1566 margin: 0;
1567 }
1568
1569 .friends-page .friends-dm-thread-header a {
1570 font-size: 13px;
1571 }
1572
1573 .friends-page .friends-dm-messages {
1574 background: light-dark(#fff, #282c37);
1575 overflow: auto;
1576 padding: 16px;
1577 }
1578
1579 .friends-page .friends-dm-message {
1580 display: grid;
1581 gap: 10px;
1582 grid-template-columns: 32px minmax(0, 1fr);
1583 margin: 0 0 16px;
1584 }
1585
1586 .friends-page .friends-dm-message-meta {
1587 align-items: baseline;
1588 display: flex;
1589 flex-wrap: wrap;
1590 gap: 8px;
1591 line-height: 1.2;
1592 }
1593
1594 .friends-page .friends-dm-message-meta strong {
1595 color: light-dark(#282c37, #dadada);
1596 }
1597
1598 .friends-page .friends-dm-delivery-status {
1599 color: light-dark(#606984, #9baec8);
1600 cursor: help;
1601 font-size: 13px;
1602 }
1603
1604 .friends-page .friends-dm-delivery-status::before {
1605 content: "·";
1606 margin-right: 8px;
1607 }
1608
1609 .friends-page .friends-dm-delivery-icon {
1610 align-items: center;
1611 display: inline-flex;
1612 flex: 0 0 auto;
1613 height: 16px;
1614 justify-content: center;
1615 line-height: 1;
1616 position: relative;
1617 width: 16px;
1618 }
1619
1620 .friends-page .friends-dm-delivery-icon::before {
1621 border: 1.5px solid currentColor;
1622 border-radius: 50%;
1623 box-sizing: border-box;
1624 content: "";
1625 height: 14px;
1626 margin: 0;
1627 width: 14px;
1628 }
1629
1630 .friends-page .friends-dm-delivery-icon::after {
1631 border: solid currentColor;
1632 border-width: 0 1.5px 1.5px 0;
1633 content: "";
1634 height: 7px;
1635 left: 6px;
1636 position: absolute;
1637 top: 3px;
1638 transform: rotate(45deg);
1639 width: 4px;
1640 }
1641
1642 .friends-page .friends-dm-delivery-icon.is-queued::before {
1643 border-style: dotted;
1644 }
1645
1646 .friends-page .friends-dm-delivery-icon.is-sending::before {
1647 border-style: dashed;
1648 }
1649
1650 .friends-page .friends-dm-delivery-icon.is-failed::after {
1651 border: 0;
1652 content: "!";
1653 font-size: 11px;
1654 font-weight: 700;
1655 height: auto;
1656 left: auto;
1657 position: absolute;
1658 top: 2px;
1659 transform: none;
1660 width: auto;
1661 }
1662
1663 .friends-page .friends-dm-delivery-tooltip {
1664 background: light-dark(#fff, #1f232b);
1665 border: 1px solid light-dark(#d9e1e8, #393f4f);
1666 border-radius: 4px;
1667 box-shadow: 0 4px 12px rgb(0 0 0 / 20%);
1668 color: light-dark(#282c37, #fff);
1669 font-size: 13px;
1670 line-height: 1.3;
1671 overflow-wrap: break-word;
1672 padding: 6px 8px;
1673 pointer-events: none;
1674 position: fixed;
1675 white-space: normal;
1676 width: min(18rem, calc(100vw - 2rem));
1677 z-index: 9999;
1678 }
1679
1680 .friends-page .friends-dm-delivery-status.is-failed {
1681 color: light-dark(#d92d20, #ff8f8f);
1682 }
1683
1684 .friends-page .friends-dm-message-content {
1685 background: light-dark(#f2f5f7, #1e2028);
1686 border: 1px solid light-dark(#d4dde8, #393f4f);
1687 border-radius: 8px;
1688 color: light-dark(#282c37, #dadada);
1689 margin-top: 4px;
1690 max-width: 720px;
1691 padding: 10px 14px;
1692 }
1693
1694 .friends-page .friends-dm-message.is-own-message .friends-dm-message-content {
1695 background: light-dark(#f4f1ff, #313052);
1696 }
1697
1698 .friends-page .friends-dm-message-content > :first-child { margin-top: 0; }
1699 .friends-page .friends-dm-message-content > :last-child { margin-bottom: 0; }
1700
1701 .friends-page .friends-dm-reply {
1702 background: light-dark(#f2f5f7, #1e2028);
1703 border-top: 1px solid light-dark(#d4dde8, #393f4f);
1704 padding: 12px 16px;
1705 }
1706
1707 .friends-page .friends-dm-reply .form-horizontal .form-group {
1708 display: flex;
1709 gap: 10px;
1710 margin-bottom: 8px;
1711 }
1712
1713 .friends-page .friends-dm-reply .form-horizontal .form-group > div:first-child {
1714 flex: 0 0 72px;
1715 }
1716
1717 .friends-page .friends-dm-reply .form-horizontal .form-group > div:nth-child(2) {
1718 flex: 1 1 auto;
1719 max-width: none;
1720 }
1721
1722 .friends-page .friends-dm-reply .form-horizontal .form-input {
1723 background: light-dark(#fff, #282c37);
1724 border: 1px solid light-dark(#d4dde8, #393f4f);
1725 border-radius: 8px;
1726 color: light-dark(#282c37, #dadada);
1727 padding: 8px 12px;
1728 width: 100%;
1729 }
1730
1731 .friends-page .friends-dm-reply textarea.friends-message-message {
1732 min-height: 76px;
1733 resize: vertical;
1734 }
1735
1736 .friends-page .friends-dm-reply .btn {
1737 background: light-dark(#563acc, #6364ff);
1738 border: none;
1739 border-radius: 999px;
1740 color: #fff;
1741 font-weight: 600;
1742 padding: 7px 18px;
1743 }
1744
1745 .friends-page .friends-dm-reply .delete-conversation {
1746 height: auto;
1747 line-height: 1.2;
1748 max-width: 100%;
1749 white-space: normal;
1750 }
1751
1752 .friends-page .friends-dm-empty {
1753 background: light-dark(#fff, #282c37);
1754 border: 1px solid light-dark(#d4dde8, #393f4f);
1755 border-radius: 8px;
1756 grid-column: 1 / -1;
1757 margin: 16px;
1758 padding: 16px;
1759 }
1760
1761 @media (max-width: 840px) {
1762 .friends-page .friends-dm-view {
1763 grid-template-columns: 1fr;
1764 height: auto;
1765 }
1766
1767 .friends-page .friends-dm-sidebar {
1768 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1769 border-right: 0;
1770 max-height: 16rem;
1771 }
1772 }
1773
1774 /* Mastodon theme: header image as banner on the title row */
1775 .mastodon-col-title-row.has-header-image {
1776 position: relative;
1777 background-size: cover;
1778 background-position: center;
1779 min-height: 150px;
1780 align-items: flex-end;
1781 padding-bottom: 10px;
1782 }
1783
1784 .mastodon-col-title-row.has-header-image::before {
1785 content: '';
1786 position: absolute;
1787 inset: 0;
1788 background: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,.6) 100%);
1789 }
1790
1791 .mastodon-col-title-row.has-header-image > * {
1792 position: relative;
1793 z-index: 1;
1794 }
1795
1796 .mastodon-col-title-row.has-header-image h2 a,
1797 .mastodon-col-title-row.has-header-image #page-title a {
1798 color: #fff;
1799 text-shadow: 0 1px 3px rgba(0,0,0,.5);
1800 }
1801
1802 .mastodon-col-title-row.has-header-image .mastodon-title-avatar {
1803 width: 48px;
1804 height: 48px;
1805 border-radius: 8px;
1806 border: 2px solid #fff;
1807 box-shadow: 0 1px 4px rgba(0,0,0,.3);
1808 }
1809
1810 .mastodon-col-title-row.has-header-image h2,
1811 .mastodon-col-title-row.has-header-image #page-title {
1812 font-size: 20px;
1813 }
1814
1815 /* === Content Sections === */
1816 .friends-page section.subscriptions,
1817 .friends-page section.followers {
1818 padding: 16px;
1819 }
1820
1821 .friends-page section.followers ul,
1822 .friends-page section.subscriptions ul {
1823 list-style: none;
1824 padding-left: 0;
1825 }
1826
1827 /* --- Subscription items --- */
1828 .friends-page section.subscriptions .subscription-item {
1829 padding: 12px 0;
1830 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1831 display: grid;
1832 grid-template-columns: 46px 1fr;
1833 grid-template-rows: auto auto auto;
1834 column-gap: 12px;
1835 row-gap: 2px;
1836 align-items: center;
1837 }
1838
1839 .friends-page section.subscriptions .subscription-item:last-child {
1840 border-bottom: none;
1841 }
1842
1843 .friends-page section.subscriptions .subscription-link {
1844 display: contents;
1845 text-decoration: none;
1846 color: light-dark(#282c37, #dadada);
1847 }
1848
1849 .friends-page section.subscriptions .subscription-link .avatar {
1850 border-radius: 8px;
1851 grid-row: 1 / 3;
1852 width: 46px;
1853 height: 46px;
1854 }
1855
1856 .friends-page section.subscriptions .subscription-info {
1857 display: inline-flex;
1858 align-items: center;
1859 gap: 6px;
1860 flex-wrap: wrap;
1861 }
1862
1863 .friends-page section.subscriptions .subscription-name {
1864 font-size: 15px;
1865 font-weight: 700;
1866 color: light-dark(#282c37, #fff);
1867 }
1868
1869 .friends-page section.subscriptions .starred {
1870 color: #ca8f04;
1871 }
1872
1873 .friends-page section.subscriptions .subscription-folder {
1874 font-size: 12px;
1875 background: light-dark(rgba(86,58,204,.08), rgba(99,100,255,.15));
1876 padding: 2px 8px;
1877 border-radius: 100px;
1878 color: light-dark(#563acc, #c4bbff);
1879 }
1880
1881 .friends-page section.subscriptions .subscription-meta {
1882 grid-column: 2;
1883 font-size: 13px;
1884 color: light-dark(#606984, #9baec8);
1885 }
1886
1887 .friends-page section.subscriptions .subscription-description {
1888 grid-column: 2;
1889 font-size: 14px;
1890 color: light-dark(#606984, #9baec8);
1891 margin: 4px 0 0;
1892 }
1893
1894 .friends-page section.subscriptions .subscription-actions {
1895 grid-column: 2;
1896 margin-top: 4px;
1897 }
1898
1899 .friends-page section.subscriptions .subscription-action {
1900 display: inline-flex;
1901 align-items: center;
1902 gap: 4px;
1903 padding: 4px 10px;
1904 border-radius: 100px;
1905 font-size: 13px;
1906 color: light-dark(#606984, #9baec8);
1907 transition: color .1s, background .1s;
1908 text-decoration: none;
1909 }
1910
1911 .friends-page section.subscriptions .subscription-unfollow:hover {
1912 color: light-dark(#c0392b, #e74c3c);
1913 background: light-dark(rgba(192,57,43,.08), rgba(231,76,60,.12));
1914 text-decoration: none;
1915 }
1916
1917 .friends-page section.subscriptions .subscription-action .dashicons {
1918 font-size: 16px;
1919 width: 16px;
1920 height: 16px;
1921 vertical-align: middle;
1922 }
1923
1924 /* --- Follower items --- */
1925 .friends-page section.followers .follower-item {
1926 padding: 12px 0;
1927 border-bottom: 1px solid light-dark(#d4dde8, #393f4f);
1928 }
1929
1930 .friends-page section.followers .follower-item:last-child {
1931 border-bottom: none;
1932 }
1933
1934 .friends-page section.followers .follower-details {
1935 /* no marker */
1936 }
1937
1938 .friends-page section.followers .follower-details > summary {
1939 list-style: none;
1940 display: grid;
1941 grid-template-columns: 46px 1fr auto;
1942 column-gap: 12px;
1943 row-gap: 0;
1944 align-items: start;
1945 cursor: pointer;
1946 }
1947
1948 .friends-page section.followers .follower-details > summary::-webkit-details-marker { display: none; }
1949 .friends-page section.followers .follower-details > summary::marker { display: none; content: ''; }
1950
1951 .friends-page section.followers .follower-link {
1952 display: contents;
1953 text-decoration: none;
1954 color: light-dark(#282c37, #dadada);
1955 }
1956
1957 .friends-page section.followers .follower-link .avatar {
1958 border-radius: 8px;
1959 grid-row: 1 / -1;
1960 width: 46px;
1961 height: 46px;
1962 max-width: none;
1963 }
1964
1965 .friends-page section.followers .follower-info {
1966 display: flex;
1967 align-items: baseline;
1968 gap: 6px;
1969 flex-wrap: wrap;
1970 min-width: 0;
1971 }
1972
1973 .friends-page section.followers .follower-name {
1974 font-size: 15px;
1975 font-weight: 700;
1976 color: light-dark(#282c37, #fff);
1977 }
1978
1979 .friends-page section.followers .follower-handle {
1980 font-size: 13px;
1981 color: light-dark(#606984, #9baec8);
1982 }
1983
1984 .friends-page section.followers .follower-meta {
1985 grid-column: 2;
1986 font-size: 13px;
1987 color: light-dark(#606984, #9baec8);
1988 line-height: 1.3;
1989 }
1990
1991 .friends-page section.followers .follower-actions {
1992 display: flex;
1993 align-items: center;
1994 gap: 4px;
1995 grid-row: 1 / -1;
1996 }
1997
1998 .friends-page section.followers .follower-action,
1999 .friends-page section.followers .follower-status {
2000 display: inline-flex;
2001 align-items: center;
2002 gap: 4px;
2003 padding: 4px 10px;
2004 border-radius: 100px;
2005 font-size: 13px;
2006 color: light-dark(#606984, #9baec8);
2007 transition: color .1s, background .1s;
2008 }
2009
2010 .friends-page section.followers .follower-action:hover {
2011 color: light-dark(#563acc, #6364ff);
2012 background: light-dark(rgba(86,58,204,.08), rgba(99,100,255,.12));
2013 text-decoration: none;
2014 }
2015
2016 .friends-page section.followers .follower-delete:hover {
2017 color: light-dark(#c0392b, #e74c3c);
2018 background: light-dark(rgba(192,57,43,.08), rgba(231,76,60,.12));
2019 }
2020
2021 .friends-page section.followers .follower-status {
2022 color: light-dark(#2ecc71, #27ae60);
2023 }
2024
2025 .friends-page section.followers .follower-actions .dashicons {
2026 font-size: 20px;
2027 width: 20px;
2028 height: 20px;
2029 vertical-align: middle;
2030 }
2031
2032 .friends-page section.followers .follower-description {
2033 grid-column: 2 / -1;
2034 font-size: 14px;
2035 color: light-dark(#606984, #9baec8);
2036 margin: 2px 0 0;
2037 display: -webkit-box;
2038 -webkit-line-clamp: 2;
2039 -webkit-box-orient: vertical;
2040 overflow: hidden;
2041 }
2042
2043 .friends-page section.followers .loading-posts {
2044 grid-column: 2;
2045 font-size: 13px;
2046 color: light-dark(#606984, #9baec8);
2047 padding: 8px 0;
2048 }
2049
2050 /* --- Filter & sort controls --- */
2051 .friends-page section.followers > p,
2052 .friends-page section.subscriptions > p {
2053 font-size: 14px;
2054 color: light-dark(#606984, #9baec8);
2055 margin-bottom: 8px;
2056 }
2057
2058 /* --- Search form --- */
2059 .friends-page section.followers .friends-search,
2060 .friends-page section.subscriptions .friends-search {
2061 display: flex;
2062 flex-wrap: wrap;
2063 align-items: center;
2064 gap: 8px;
2065 margin: 0 0 12px;
2066 font-size: 14px;
2067 color: light-dark(#606984, #9baec8);
2068 }
2069
2070 .friends-page section.followers .friends-search-label,
2071 .friends-page section.subscriptions .friends-search-label {
2072 display: inline-flex;
2073 align-items: center;
2074 gap: 6px;
2075 flex: 1 1 240px;
2076 min-width: 0;
2077 }
2078
2079 .friends-page section.followers .friends-search-input,
2080 .friends-page section.subscriptions .friends-search-input {
2081 flex: 1 1 auto;
2082 min-width: 0;
2083 box-sizing: border-box;
2084 padding: 6px 10px;
2085 font-size: 14px;
2086 line-height: 1.3;
2087 color: light-dark(#282c37, #dadada);
2088 background: light-dark(#fff, #282c37);
2089 border: 1px solid light-dark(#d4dde8, #393f4f);
2090 border-radius: 4px;
2091 }
2092
2093 .friends-page section.followers .friends-search-input:focus,
2094 .friends-page section.subscriptions .friends-search-input:focus {
2095 outline: none;
2096 border-color: light-dark(#563acc, #6364ff);
2097 }
2098
2099 .friends-page section.followers .friends-search-submit,
2100 .friends-page section.subscriptions .friends-search-submit {
2101 padding: 6px 14px;
2102 font-size: 14px;
2103 line-height: 1.3;
2104 background: light-dark(#563acc, #6364ff);
2105 color: #fff;
2106 border: 0;
2107 border-radius: 4px;
2108 cursor: pointer;
2109 }
2110
2111 .friends-page section.followers .friends-search-clear,
2112 .friends-page section.subscriptions .friends-search-clear {
2113 color: light-dark(#563acc, #c4bbff);
2114 font-size: 13px;
2115 }
2116
2117 .friends-page section.followers > p a,
2118 .friends-page section.subscriptions > p a {
2119 color: light-dark(#563acc, #c4bbff);
2120 }
2121
2122 .friends-page section.followers > p strong,
2123 .friends-page section.subscriptions > p strong {
2124 color: light-dark(#282c37, #fff);
2125 }
2126
2127 /* --- Add friend review flow --- */
2128 .friends-page section.add-friend-subscriptions {
2129 display: grid;
2130 gap: 12px;
2131 padding: 16px;
2132 }
2133
2134 .friends-page section.add-friend-subscriptions .card {
2135 background: light-dark(#fff, #282c37);
2136 border-radius: 12px;
2137 margin: 0;
2138 }
2139
2140 .friends-page section.add-friend-subscriptions .card-body {
2141 padding: 16px;
2142 }
2143
2144 .friends-page section.add-friend-subscriptions .hidden {
2145 display: none;
2146 }
2147
2148 .friends-page section.add-friend-subscriptions .add-subscription-input {
2149 display: flex;
2150 align-items: flex-start;
2151 gap: 10px;
2152 }
2153
2154 .friends-page section.add-friend-subscriptions textarea.form-input {
2155 flex: 1 1 auto;
2156 min-height: 96px;
2157 resize: vertical;
2158 width: 100%;
2159 }
2160
2161 .friends-page section.add-friend-subscriptions .form-select {
2162 background: light-dark(#eaedf1, #313543);
2163 border: 1px solid transparent;
2164 border-radius: 100px;
2165 color: light-dark(#282c37, #dadada);
2166 font: inherit;
2167 padding: 8px 16px;
2168 width: 100%;
2169 }
2170
2171 .friends-page section.add-friend-subscriptions .opml-file-hint,
2172 .friends-page section.add-friend-subscriptions .subscription-preview-description,
2173 .friends-page section.add-friend-subscriptions .subscription-feed-details,
2174 .friends-page section.add-friend-subscriptions .subscription-preview-status,
2175 .friends-page section.add-friend-subscriptions .bulk-feed-status {
2176 color: light-dark(#606984, #9baec8);
2177 font-size: 13px;
2178 }
2179
2180 .friends-page section.add-friend-subscriptions #preview-subscription:not(:empty) {
2181 margin-top: 14px;
2182 }
2183
2184 .friends-page section.add-friend-subscriptions .bulk-controls,
2185 .friends-page section.add-friend-subscriptions .subscription-feed-actions,
2186 .friends-page section.add-friend-subscriptions .subscription-preview-actions {
2187 display: flex;
2188 flex-wrap: wrap;
2189 align-items: center;
2190 gap: 8px;
2191 margin-top: 12px;
2192 }
2193
2194 .friends-page section.add-friend-subscriptions .subscription-preview-results,
2195 .friends-page section.add-friend-subscriptions .bulk-feed-list,
2196 .friends-page section.add-friend-subscriptions .subscription-feed-list {
2197 display: grid;
2198 gap: 10px;
2199 list-style: none;
2200 margin: 12px 0 0;
2201 padding: 0;
2202 }
2203
2204 .friends-page section.add-friend-subscriptions .subscription-feed-list.hidden {
2205 display: none;
2206 }
2207
2208 .friends-page section.add-friend-subscriptions .bulk-feed-row,
2209 .friends-page section.add-friend-subscriptions .subscription-feed-option {
2210 background: light-dark(#f7f9fb, #313543);
2211 border-radius: 10px;
2212 padding: 12px;
2213 }
2214
2215 .friends-page section.add-friend-subscriptions .bulk-feed-row > label,
2216 .friends-page section.add-friend-subscriptions .subscription-feed-option > label {
2217 display: block;
2218 font-weight: 700;
2219 overflow-wrap: anywhere;
2220 }
2221
2222 .friends-page section.add-friend-subscriptions .bulk-feed-row > label small,
2223 .friends-page section.add-friend-subscriptions .subscription-feed-option > label small {
2224 color: light-dark(#606984, #9baec8);
2225 font-weight: 400;
2226 }
2227
2228 .friends-page section.add-friend-subscriptions .bulk-feed-row.is-reviewing > .label-for-bulkfeed,
2229 .friends-page section.add-friend-subscriptions .bulk-feed-row.is-reviewing > .bulk-feed-status {
2230 display: none;
2231 }
2232
2233 .friends-page section.add-friend-subscriptions .bulk-feed-review {
2234 margin-top: 10px;
2235 }
2236
2237 .friends-page section.add-friend-subscriptions .feed-preview {
2238 background: light-dark(#f7f9fb, #313543);
2239 border-radius: 12px;
2240 box-shadow: inset 4px 0 0 light-dark(rgba(86,58,204,.18), rgba(99,100,255,.25));
2241 margin-top: 12px;
2242 padding: 14px;
2243 }
2244
2245 .friends-page section.add-friend-subscriptions .bulk-feed-review .feed-preview {
2246 background: transparent;
2247 border-radius: 0;
2248 box-shadow: none;
2249 margin-top: 0;
2250 padding: 0;
2251 }
2252
2253 .friends-page section.add-friend-subscriptions .subscription-preview-header,
2254 .friends-page section.add-friend-subscriptions .subscribe-success {
2255 display: flex;
2256 align-items: center;
2257 gap: 10px;
2258 }
2259
2260 .friends-page section.add-friend-subscriptions .subscription-preview-header .avatar,
2261 .friends-page section.add-friend-subscriptions .subscribe-success .avatar {
2262 border-radius: 8px;
2263 flex: 0 0 auto;
2264 }
2265
2266 .friends-page section.add-friend-subscriptions .subscription-preview-title,
2267 .friends-page section.add-friend-subscriptions .subscription-feed-preview-title {
2268 display: flex;
2269 flex-direction: column;
2270 min-width: 0;
2271 }
2272
2273 .friends-page section.add-friend-subscriptions .subscription-preview-title small,
2274 .friends-page section.add-friend-subscriptions .subscription-feed-preview-title small {
2275 color: light-dark(#606984, #9baec8);
2276 overflow-wrap: anywhere;
2277 }
2278
2279 .friends-page section.add-friend-subscriptions .subscription-settings,
2280 .friends-page section.add-friend-subscriptions .subscription-feed-controls {
2281 display: grid;
2282 grid-template-columns: repeat(2, minmax(0, 1fr));
2283 gap: 10px;
2284 margin-top: 12px;
2285 }
2286
2287 .friends-page section.add-friend-subscriptions .subscription-settings label,
2288 .friends-page section.add-friend-subscriptions .subscription-feed-controls label {
2289 display: grid;
2290 gap: 4px;
2291 font-size: 13px;
2292 font-weight: 700;
2293 }
2294
2295 .friends-page section.add-friend-subscriptions .subscription-feed-url-label {
2296 grid-column: 1 / -1;
2297 }
2298
2299 .friends-page section.add-friend-subscriptions .subscription-feed-preview {
2300 background: light-dark(#fff, #282c37);
2301 border-radius: 8px;
2302 margin-top: 10px;
2303 padding: 10px;
2304 }
2305
2306 .friends-page section.add-friend-subscriptions .subscription-feed-preview ul {
2307 display: grid;
2308 gap: 10px;
2309 list-style: none;
2310 margin: 0;
2311 padding: 0;
2312 }
2313
2314 .friends-page section.add-friend-subscriptions .subscription-feed-preview p {
2315 color: light-dark(#606984, #9baec8);
2316 font-size: 13px;
2317 margin: 3px 0 0;
2318 }
2319
2320 .friends-page section.add-friend-subscriptions .error,
2321 .friends-page section.add-friend-subscriptions .subscription-preview-status.error,
2322 .friends-page section.add-friend-subscriptions .bulk-feed-status.error {
2323 color: light-dark(#c0392b, #e74c3c);
2324 }
2325
2326 @media (max-width: 640px) {
2327 .friends-page section.add-friend-subscriptions .add-subscription-input {
2328 flex-direction: column;
2329 }
2330
2331 .friends-page section.add-friend-subscriptions .add-subscription-input .btn,
2332 .friends-page section.add-friend-subscriptions .bulk-controls .btn,
2333 .friends-page section.add-friend-subscriptions .subscription-feed-actions .btn,
2334 .friends-page section.add-friend-subscriptions .subscription-preview-actions .btn {
2335 width: 100%;
2336 }
2337
2338 .friends-page section.add-friend-subscriptions .subscription-settings,
2339 .friends-page section.add-friend-subscriptions .subscription-feed-controls {
2340 grid-template-columns: 1fr;
2341 }
2342 }
2343
2344 /* === Pagination === */
2345 .friends-page .navigation {
2346 padding: 16px;
2347 font-size: 14px;
2348 border-top: 1px solid light-dark(#d4dde8, #393f4f);
2349 }
2350
2351 .friends-page .navigation a { color: light-dark(#563acc, #c4bbff); }
2352
2353 /* === Loading === */
2354 .friends-page .loading {
2355 color: transparent !important;
2356 pointer-events: none;
2357 position: relative;
2358 min-height: 20px;
2359 min-width: 20px;
2360 animation: none;
2361 border: 0;
2362 }
2363
2364 .friends-page .loading::after {
2365 content: "";
2366 display: block;
2367 position: absolute;
2368 top: 50%;
2369 left: 50%;
2370 width: 20px;
2371 height: 20px;
2372 margin-top: -10px;
2373 margin-left: -10px;
2374 border: 2px solid light-dark(#d4dde8, #393f4f);
2375 border-top-color: light-dark(#563acc, #6364ff);
2376 border-radius: 50%;
2377 animation: mast-spin .7s linear infinite;
2378 }
2379
2380 @keyframes mast-spin {
2381 to { transform: rotate(360deg); }
2382 }
2383
2384 /* === Utility === */
2385 .friends-page .d-hide { display: none !important; }
2386 .friends-page .mb-2 { margin-bottom: 8px; }
2387 .friends-page .ml-1 { margin-left: 4px; }
2388 .friends-page .mr-2 { margin-right: 8px; }
2389 .friends-page .text { font-size: 13px; }
2390 .friends-page .mention-indicator { color: light-dark(#563acc, #c4bbff); font-weight: 700; }
2391 .friends-page .toggle-compact { cursor: pointer; }
2392 .friends-page .overflow { display: none; }
2393
2394 /* Migration notification */
2395 .friends-page .friends-migration-notification {
2396 display: flex;
2397 align-items: center;
2398 gap: .4rem;
2399 padding: .5rem 1rem;
2400 background: light-dark(#fef9e7, #2a2410);
2401 border-bottom: 1px solid light-dark(#e8c840, #5a4a00);
2402 font-size: .85rem;
2403 white-space: nowrap;
2404 overflow: hidden;
2405 }
2406 .friends-page .friends-migration-notification .friends-migration-notification-meta {
2407 margin-left: auto;
2408 display: flex;
2409 align-items: center;
2410 gap: .5rem;
2411 white-space: nowrap;
2412 opacity: .75;
2413 }
2414 .friends-page .friends-migration-notification button {
2415 background: none;
2416 border: 1px solid currentColor;
2417 border-radius: 3px;
2418 cursor: pointer;
2419 font-size: .8rem;
2420 padding: 1px 6px;
2421 }
2422
2423 /* === Compact (all-collapsed) Mode === */
2424
2425 /* Collapsed items: hide body and footer */
2426 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .card-body,
2427 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .entry-content,
2428 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) footer.entry-meta {
2429 display: none;
2430 }
2431
2432 /* Show card-title as a truncated preview line in compact mode */
2433 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .card-title {
2434 margin: 2px 0 0;
2435 white-space: nowrap;
2436 overflow: hidden;
2437 text-overflow: ellipsis;
2438 }
2439
2440 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .card-title a {
2441 font-size: 13px;
2442 font-weight: 400;
2443 color: light-dark(#606984, #9baec8);
2444 }
2445
2446 /* Compact card: reduce padding, single-line layout */
2447 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) {
2448 padding: 10px 14px 10px 52px;
2449 cursor: pointer;
2450 }
2451
2452 /* Smaller avatar in compact mode */
2453 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .card-header > div.avatar {
2454 top: 10px;
2455 left: 14px;
2456 }
2457
2458 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .card-header .avatar img {
2459 width: 28px;
2460 height: 28px;
2461 }
2462
2463 /* Header inline */
2464 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .card-header {
2465 margin-bottom: 0;
2466 align-items: center;
2467 }
2468
2469 /* Author and permalink inline */
2470 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .post-meta {
2471 display: flex;
2472 align-items: center;
2473 gap: 6px;
2474 flex-wrap: nowrap;
2475 overflow: hidden;
2476 }
2477
2478 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .author {
2479 flex-shrink: 0;
2480 }
2481
2482 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .author::after {
2483 content: '\00b7';
2484 margin-left: 6px;
2485 color: light-dark(#999, #606984);
2486 }
2487
2488 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .permalink {
2489 flex-shrink: 0;
2490 font-size: 12px;
2491 }
2492
2493 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .reading-time {
2494 display: none;
2495 }
2496
2497 /* Show teaser inline after header */
2498 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) div.teaser {
2499 display: block;
2500 font-size: 13px;
2501 color: light-dark(#606984, #9baec8);
2502 white-space: nowrap;
2503 overflow: hidden;
2504 text-overflow: ellipsis;
2505 margin-top: 2px;
2506 }
2507
2508 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) div.teaser p {
2509 display: inline;
2510 margin: 0;
2511 }
2512
2513 /* Hide reblog/boost metadata in collapsed mode */
2514 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .reblog-info,
2515 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .reblogged-by {
2516 display: none;
2517 }
2518
2519 /* Hide overflow menu in collapsed mode */
2520 .friends-page .posts.all-collapsed article.card:not(.uncollapsed) .overflow {
2521 display: none;
2522 }
2523
2524 /* Expanded item within collapsed list: teaser hidden */
2525 .friends-page .posts.all-collapsed article.card.uncollapsed div.teaser {
2526 display: none;
2527 }
2528
2529 /* Highlight for currently-selected item */
2530 .friends-page .posts.all-collapsed article.card.mast-current:not(.uncollapsed) {
2531 background: light-dark(#f0f3f8, #2c3040);
2532 }
2533
2534 /* === Link Previews === */
2535 .friends-page a.friends-link-preview {
2536 display: flex;
2537 flex-direction: column;
2538 margin-top: 12px;
2539 overflow: hidden;
2540 border: 1px solid light-dark(#d4dde8, #393f4f);
2541 border-radius: 8px;
2542 background: light-dark(#f2f5f7, #1e2028);
2543 color: inherit;
2544 text-decoration: none;
2545 }
2546
2547 .friends-page a.friends-link-preview:hover {
2548 border-color: light-dark(#b6c3d4, #4a5266);
2549 text-decoration: none;
2550 }
2551
2552 .friends-page a.friends-link-preview .friends-link-preview-image img {
2553 display: block;
2554 width: 100%;
2555 height: auto;
2556 object-fit: cover;
2557 aspect-ratio: 1.91 / 1;
2558 }
2559
2560 .friends-page a.friends-link-preview .friends-link-preview-text {
2561 display: flex;
2562 flex-direction: column;
2563 gap: 3px;
2564 padding: 12px;
2565 min-width: 0;
2566 }
2567
2568 .friends-page a.friends-link-preview .friends-link-preview-host {
2569 color: light-dark(#606984, #9baec8);
2570 font-size: 13px;
2571 text-transform: uppercase;
2572 }
2573
2574 .friends-page a.friends-link-preview .friends-link-preview-title {
2575 font-size: 15px;
2576 font-weight: 600;
2577 line-height: 1.3;
2578 }
2579
2580 .friends-page a.friends-link-preview .friends-link-preview-description {
2581 color: light-dark(#606984, #9baec8);
2582 font-size: 14px;
2583 line-height: 1.4;
2584 display: -webkit-box;
2585 -webkit-line-clamp: 3;
2586 -webkit-box-orient: vertical;
2587 overflow: hidden;
2588 }
2589