this repo has no description
1/* REBLOG + REPLY-TO */
2
3.status-reblog {
4 background: linear-gradient(
5 160deg,
6 var(--reblog-faded-color),
7 transparent min(160px, 50%)
8 );
9}
10.status-group {
11 background: linear-gradient(
12 160deg,
13 var(--group-faded-color),
14 transparent min(160px, 50%)
15 );
16}
17.status-followed-tags {
18 background: linear-gradient(
19 160deg,
20 var(--hashtag-faded-color),
21 transparent min(160px, 50%)
22 );
23}
24.status-reply-to {
25 background: linear-gradient(
26 160deg,
27 var(--reply-to-faded-color),
28 transparent min(160px, 50%)
29 );
30}
31:is(.status-reblog, .status-group, .status-followed-tags) .status-reply-to {
32 background: linear-gradient(
33 -20deg,
34 var(--reply-to-faded-color),
35 transparent min(160px, 50%)
36 );
37}
38.visibility-direct {
39 --yellow-stripes: repeating-linear-gradient(
40 -45deg,
41 var(--reply-to-faded-color),
42 var(--reply-to-faded-color) 10px,
43 var(--reply-to-faded-color) 10px,
44 transparent 10px,
45 transparent 20px
46 );
47 /* diagonal stripes of yellow */
48 background-image: var(--yellow-stripes);
49}
50
51/* STATUS PRE META */
52
53.status-pre-meta {
54 padding: 8px 16px 0;
55 opacity: 0.75;
56 font-size: smaller;
57 vertical-align: middle;
58 white-space: nowrap;
59 text-overflow: ellipsis;
60 overflow: hidden;
61 margin-bottom: -8px;
62}
63.status-reblog .status-pre-meta .icon {
64 color: var(--reblog-color);
65 margin-right: 4px;
66 vertical-align: text-bottom;
67}
68.status-group .status-pre-meta .icon {
69 color: var(--group-color);
70 margin-right: 4px;
71 vertical-align: text-bottom;
72}
73.status-followed-tags {
74 .status-pre-meta {
75 position: relative;
76 z-index: 1;
77 display: flex;
78 flex-wrap: wrap;
79 gap: 4px;
80 align-items: center;
81
82 .icon {
83 color: var(--hashtag-color);
84 margin-right: 4px;
85 vertical-align: text-bottom;
86 }
87 a {
88 color: var(--hashtag-text-color);
89 font-weight: bold;
90 font-size: 12px;
91 text-decoration-color: var(--hashtag-faded-color);
92 text-underline-offset: 2px;
93 text-decoration-thickness: 2px;
94 display: inline-block;
95 padding: 2px;
96 vertical-align: top;
97 text-transform: uppercase;
98 text-shadow: 0 1px var(--bg-color);
99
100 &:hover {
101 color: var(--text-color);
102 text-decoration-color: var(--hashtag-color);
103 }
104 }
105 }
106
107 .status-followed-tag-item {
108 color: var(--hashtag-text-color);
109 padding: 2px;
110 font-weight: bold;
111 font-size: 12px;
112 text-transform: uppercase;
113 margin-inline-end: 0.5em;
114 }
115}
116
117/* STATUS */
118
119.status {
120 display: flex;
121 padding: 16px;
122 line-height: 1.4;
123 align-items: flex-start;
124 position: relative;
125 font-size: var(--text-size);
126}
127.status.large {
128 --fade-in-out-bg: linear-gradient(
129 to bottom,
130 transparent,
131 var(--bg-color) 70px,
132 var(--bg-color) calc(100% - 50px),
133 transparent
134 );
135 padding-bottom: 8px;
136 background-image: var(--fade-in-out-bg);
137}
138.status.large.visibility-direct {
139 background-image: var(--fade-in-out-bg), var(--yellow-stripes);
140}
141
142.status-card-link {
143 text-decoration: none;
144 color: var(--text-color);
145}
146.status-card-link:not(
147 .truncated .status-card-link, /* parent status already truncated */
148 .status-card-link .status-card-link /* nested status cards */
149 ):has(.truncated) {
150 display: block;
151 position: relative;
152
153 &:after {
154 content: attr(data-read-more);
155 line-height: 1;
156 display: inline-block;
157 position: absolute;
158 --inset-offset: 16px;
159 inset-block-end: var(--inset-offset);
160 inset-inline-end: var(--inset-offset);
161 color: var(--text-color);
162 background-color: var(--bg-faded-color);
163 border: 1px dashed var(--link-color);
164 box-shadow: 0 0 0 1px var(--bg-color), 0 -5px 10px var(--bg-color),
165 0 -5px 15px var(--bg-color), 0 -5px 20px var(--bg-color);
166 padding: 0.5em 0.75em;
167 border-radius: 10em;
168 font-size: 90%;
169 white-space: nowrap;
170 transition: transform 0.2s ease-out;
171 }
172
173 &:is(:hover, :focus):after {
174 color: var(--link-color);
175 transform: translate(2px, 0);
176 }
177}
178.status-card-link:is(:hover, :focus) .status-card {
179 border-color: var(--outline-hover-color);
180 box-shadow: inset 0 0 0 4px var(--bg-faded-blur-color);
181}
182.status-card-link:is(:hover, :focus) .status-card img {
183 animation: position-object 5s ease-in-out 1s 5;
184 animation-duration: var(--anim-duration, 5s);
185}
186.status-card-link:is(:active) .status-card {
187 background-color: var(--bg-faded-color);
188}
189.status-card {
190 font-size: calc(var(--text-size) * 0.9);
191 margin: 1em 0 0;
192 border-radius: 16px;
193 padding: 12px;
194 border: 1px solid var(--outline-color);
195 background-color: var(--bg-color);
196 box-shadow: inset 0 0 4px var(--outline-color);
197 /* box-shadow: inset 0 0 0 2px var(--bg-faded-color); */
198 /* filter: drop-shadow(0 2px 4px var(--bg-faded-color)); */
199}
200.status-card:has(.status-badge:not(:empty)) {
201 border-top-right-radius: 8px;
202}
203.status-card > * {
204 pointer-events: none;
205}
206.status-card:not(.status-carousel .status)
207 :is(.content, .poll, .media-container) {
208 max-height: 160px !important;
209 overflow: clip;
210}
211.status.small:not(.status-carousel .status, .status.large .status)
212 .status-card
213 :is(.content, .poll, .media-container:not(.media-gt2)) {
214 max-height: 80px !important;
215}
216.status.large .status-card :is(.content, .poll, .media-container) {
217 max-height: 80vh !important;
218}
219.status-card :is(.content, .poll, .media-container) {
220 font-size: inherit !important;
221}
222.status-card :is(.content.truncated, .poll, .media-container.truncated) {
223 /* font-size: inherit !important; */
224 mask-image: linear-gradient(to bottom, #000 80px, transparent);
225}
226.status.small
227 .status-card
228 :is(.content.truncated, .poll, .media-container.truncated) {
229 mask-image: linear-gradient(to bottom, #000 40px, transparent);
230}
231.status-card .card {
232 display: none;
233}
234.timeline-deck .status-card .content.truncated:after {
235 /* Don't show "Read more" in status cards */
236 content: none !important;
237}
238
239@keyframes skeleton-breathe {
240 0% {
241 opacity: 1;
242 }
243 40% {
244 opacity: 0.4;
245 }
246 100% {
247 opacity: 1;
248 }
249}
250.status.skeleton {
251 color: var(--outline-color);
252 animation: skeleton-breathe 6s linear infinite;
253 user-select: none;
254 pointer-events: none;
255 contain: layout;
256 text-rendering: optimizeSpeed;
257}
258.status.skeleton > .avatar {
259 background-color: var(--outline-color);
260}
261
262.status.filtered {
263 padding-block: 12px;
264 display: flex;
265 gap: 8px;
266 align-items: center;
267
268 .status-carousel & {
269 padding: 16px 16px 16px 24px;
270 }
271}
272.status.filtered .status-filtered-info {
273 pointer-events: none;
274 flex-grow: 1;
275 font-size: 90%;
276 white-space: nowrap;
277 overflow: hidden;
278 text-overflow: ellipsis;
279 mask-image: linear-gradient(to right, black 90%, transparent);
280 position: relative;
281}
282.status.filtered .avatar {
283 opacity: 0.5;
284 transition: opacity 0.7s ease-in;
285}
286.status.filtered:is(:hover, :focus, :active) .avatar {
287 opacity: 1;
288}
289.status.filtered :is(.status-filtered-info-1, .status-filtered-info-2) {
290 transition: all 0.2s ease-out;
291}
292.status.filtered:hover :is(.status-filtered-info-1, .status-filtered-info-2) {
293 transition-delay: 0.5s;
294}
295.status.filtered .status-filtered-info-1 {
296 opacity: 0.5;
297}
298.status.filtered:is(:hover, :focus, :active) .status-filtered-info-1 {
299 opacity: 0;
300}
301.status.filtered .status-filtered-info-2 {
302 opacity: 0;
303 transform: translateX(8px);
304 position: absolute;
305 left: 0;
306}
307.status.filtered:is(:hover, :focus, :active) .status-filtered-info-2 {
308 opacity: 0.75;
309 transform: translateX(0);
310}
311
312.status.compact-thread {
313 display: flex;
314 gap: 8px;
315 padding-block: 8px;
316}
317.status.compact-thread .status-thread-badge {
318 flex-shrink: 0;
319 min-width: 50px;
320 justify-content: center;
321}
322.status.compact-thread .content-compact {
323 overflow: hidden;
324 display: -webkit-box;
325 display: box;
326 -webkit-box-orient: vertical;
327 box-orient: vertical;
328 -webkit-line-clamp: 2;
329 line-clamp: 2;
330 font-size: 90%;
331}
332
333.status .container {
334 flex-grow: 1;
335 min-width: 0;
336}
337.status:not(.small) > .container {
338 padding-left: 12px;
339}
340
341.status > .container > .meta {
342 display: flex;
343 gap: 4px;
344 /* justify-content: space-between; */
345 white-space: nowrap;
346}
347.status.small > .container > .meta {
348 margin-bottom: 4px;
349}
350.status > .container > .meta > * {
351 min-width: 0;
352 overflow: hidden;
353 /* text-overflow: ellipsis; */
354}
355.status > .container > .meta .meta-name {
356 mask-image: linear-gradient(to left, transparent, black 16px);
357 flex-grow: 1;
358}
359.status.large > .container > .meta {
360 min-height: 50px;
361}
362.status > .container > .meta .arrow {
363 color: var(--reply-to-color);
364 vertical-align: middle;
365}
366.status > .container > .meta :is(.time, .edited) {
367 color: inherit;
368 text-align: end;
369 opacity: 0.5;
370 text-decoration: none;
371 flex-shrink: 0;
372 margin-left: 4px;
373 white-space: nowrap;
374}
375.status > .container > .meta a.time {
376 position: relative;
377 overflow: visible;
378}
379.status > .container > .meta a.time:is(:hover, :focus) {
380 text-decoration: underline;
381}
382.status > .container > .meta a.time:active,
383.status > .container > .meta a.time.is-open {
384 text-decoration: none;
385 opacity: 1;
386}
387.status > .container > .meta a.time:after {
388 content: '';
389 position: absolute;
390 inset: -16px -16px -8px;
391}
392.status > .container > .meta .reply-to {
393 opacity: 0.5;
394 font-size: smaller;
395}
396
397.status-reply-badge {
398 display: inline-flex;
399 margin: 2px 0 2px 4px;
400 gap: 4px;
401 align-items: center;
402 vertical-align: middle;
403}
404.status-reply-badge .icon {
405 color: var(--reply-to-color);
406}
407.status-thread-badge {
408 vertical-align: middle;
409 display: inline-flex;
410 margin: 2px 0;
411 gap: 4px;
412 align-items: center;
413 color: var(--reply-to-text-color);
414 background: var(--bg-color);
415 border: 1px solid var(--reply-to-color);
416 border-radius: 4px;
417 padding: 4px;
418 font-size: 10px;
419 line-height: 1;
420 text-transform: uppercase;
421 opacity: 0.75;
422 background-image: repeating-linear-gradient(
423 -70deg,
424 transparent,
425 transparent 3px,
426 var(--reply-to-faded-color) 3px,
427 var(--reply-to-faded-color) 4px
428 );
429 font-weight: bold;
430}
431.status-direct-badge {
432 vertical-align: middle;
433 display: inline-flex;
434 margin: 2px 0;
435 gap: 4px;
436 align-items: center;
437 color: var(--reply-to-text-color);
438 background-color: var(--bg-color);
439 border: 1px solid var(--reply-to-text-color);
440 border-radius: 4px;
441 padding: 4px;
442 font-size: 10px;
443 line-height: 1;
444 text-transform: uppercase;
445 opacity: 0.75;
446 font-weight: bold;
447 box-shadow: inset 0 0 0 1px var(--reply-to-color);
448}
449.status-filtered-badge {
450 flex-shrink: 0;
451 color: var(--text-insignificant-color);
452 /* background: var(--bg-faded-color); */
453 /* border: var(--hairline-width) solid var(--bg-color); */
454 border: var(--hairline-width) dashed var(--text-insignificant-color);
455 border-radius: 4px;
456 padding: 4px;
457 font-size: 10px;
458 line-height: 1;
459 text-transform: uppercase;
460 font-weight: bold;
461 vertical-align: middle;
462 display: inline-block;
463}
464.status-filtered-badge.badge-meta {
465 display: inline-flex;
466 flex-direction: column;
467 position: relative;
468 top: calc((9px + 2px) / 2 * -1);
469 min-width: 50px;
470 text-align: center;
471}
472.status-filtered-badge.clickable:hover {
473 cursor: pointer;
474 color: var(--text-color);
475 border-color: var(--text-color);
476 background: var(--bg-color);
477}
478.status-filtered-badge.badge-meta > span:first-child {
479 white-space: nowrap;
480}
481.status-filtered-badge.badge-meta > span + span {
482 display: block;
483 font-size: 9px;
484 font-weight: normal;
485 text-transform: none;
486 white-space: nowrap;
487 text-overflow: ellipsis;
488 overflow: hidden;
489 position: absolute;
490 width: 100%;
491 top: calc(100% + 2px);
492 left: 0;
493 text-align: center;
494}
495
496.status.large > .container > .content-container {
497 margin-left: calc(-50px - 16px);
498 padding-top: 10px;
499 padding-bottom: 10px;
500}
501
502.status
503 .content-container.has-spoiler
504 :is(.spoiler-button, .spoiler-media-button):not([hidden]) {
505 margin: 4px 0;
506 font-size: 90%;
507 border: 1px dashed var(--button-bg-color);
508 display: flex;
509 gap: 4px;
510 align-items: center;
511}
512.status .content-container.has-spoiler:not(.show-spoiler) .spoiler-button {
513 ~ *:not(
514 .content.truncated,
515 .media-container,
516 .card,
517 .media-figure-multiple,
518 .spoiler-media-button
519 ),
520 ~ .card .meta-container {
521 /* filter: blur(5px) invert(0.5);
522 image-rendering: crisp-edges;
523 image-rendering: pixelated; */
524 opacity: 0.2;
525 text-decoration-thickness: 1.5em;
526 text-decoration-line: line-through;
527 text-rendering: optimizeSpeed;
528 pointer-events: none;
529 user-select: none;
530 /* contain: layout; */
531 /* transform: scale(0.97);
532 transition: transform 0.1s ease-in-out; */
533
534 * {
535 text-decoration-color: inherit;
536 text-decoration-thickness: 1.5em;
537 text-decoration-line: line-through;
538 text-rendering: optimizeSpeed;
539 }
540
541 img {
542 filter: invert(0.5);
543 background-color: black;
544 }
545 }
546
547 ~ .content.truncated {
548 opacity: 1;
549
550 > * {
551 opacity: 0.2;
552 text-decoration-thickness: 1.5em;
553 text-decoration-line: line-through;
554 text-rendering: optimizeSpeed;
555 pointer-events: none;
556 user-select: none;
557
558 * {
559 text-decoration-color: inherit;
560 text-decoration-thickness: 1.5em;
561 text-decoration-line: line-through;
562 text-rendering: optimizeSpeed;
563 }
564 }
565 }
566
567 /* ~ :is(.media-container, .media-figure-multiple) .media > *, */
568 ~ .card .card-image > img {
569 display: none;
570 /* filter: blur(32px);
571 opacity: 0;
572 image-rendering: crisp-edges;
573 image-rendering: pixelated;
574 animation: none !important; */
575 }
576}
577.status .content-container.has-spoiler:not(.show-media) .spoiler-media-button {
578 ~ :is(.media-container, .media-figure-multiple) figcaption {
579 /* filter: blur(5px) invert(0.5);
580 image-rendering: crisp-edges;
581 image-rendering: pixelated; */
582 opacity: 0.2;
583 color: inherit;
584 text-decoration-thickness: 1.5em;
585 text-decoration-line: line-through;
586 text-rendering: optimizeSpeed;
587 pointer-events: none;
588 user-select: none;
589 /* contain: layout; */
590 /* transform: scale(0.97);
591 transition: transform 0.1s ease-in-out; */
592
593 * {
594 text-decoration-thickness: 1.5em;
595 text-decoration-line: line-through;
596 text-rendering: optimizeSpeed;
597 }
598
599 img {
600 opacity: 0;
601 }
602 }
603
604 ~ :is(.media-container, .media-figure-multiple) .media {
605 background-image: radial-gradient(
606 circle at 50% 50%,
607 var(--average-color, var(--bg-faded-color)),
608 var(--bg-color) 20em
609 );
610
611 > *:not(.media-play, .alt-badge) {
612 /* display: none; */
613 /* filter: blur(32px); */
614 opacity: 0;
615 image-rendering: crisp-edges;
616 image-rendering: pixelated;
617 animation: none !important;
618 }
619 }
620}
621.status
622 .content-container.show-spoiler
623 :is(.spoiler-button, .spoiler-media-button).spoiling {
624 border-style: dotted;
625}
626
627.status .content-container .spoiler-divider {
628 display: flex;
629 align-items: center;
630 gap: 4px;
631 color: var(--text-insignificant-color);
632 text-transform: uppercase;
633 font-size: 0.8em;
634 margin-top: 0.25em;
635 margin-bottom: 1em;
636 padding-block: 0.25em;
637 border-bottom: 1px dashed var(--divider-color);
638}
639
640.status .content-comment-hint {
641 margin-top: 0.25em;
642 font-size: 90%;
643 display: flex;
644 gap: 4px;
645 align-items: center;
646}
647
648.status.compact-thread .spoiler-badge {
649 font-size: smaller;
650 color: var(--button-bg-color);
651 border: 1px dashed var(--button-bg-color);
652 padding: 2px 4px;
653 border-radius: 16px;
654 display: inline-flex;
655 margin: 4px;
656 align-items: center;
657 justify-content: center;
658 background: var(--bg-faded-color);
659}
660
661.timeline-deck .status .content {
662 max-height: 50vh;
663 max-height: 50dvh;
664 overflow: clip;
665 position: relative;
666}
667.timeline-deck
668 .status-reblog:not(.status-carousel .status-reblog)
669 .status
670 .content {
671 /* Deprioritise long-form boosts */
672 max-height: 40vh;
673 max-height: 40dvh;
674}
675.timeline-deck .status:not(.truncated .status) .content.truncated {
676 mask-image: linear-gradient(
677 to top,
678 transparent,
679 rgba(0, 0, 0, 0.5) 1em,
680 black 1.5em
681 );
682}
683.timeline-deck .status:not(.truncated .status) .content.truncated:after {
684 content: attr(data-read-more);
685 line-height: 1;
686 display: inline-block;
687 position: absolute;
688 inset-block-end: 1.5em;
689 left: 45%;
690 transform: translateX(-50%);
691 color: var(--text-color);
692 background-color: var(--bg-faded-color);
693 border: 1px dashed var(--link-color);
694 padding: 0.75em 1em;
695 border-radius: 10em;
696 font-size: 90%;
697 white-space: nowrap;
698 box-shadow: 0 0 0 1px var(--bg-color), 0 -5px 10px var(--bg-color),
699 0 -5px 15px var(--bg-color), 0 -5px 20px var(--bg-color);
700 transition: transform 0.5s ease-in-out;
701}
702.timeline-deck .status .content.truncated:hover:after {
703 color: var(--link-color);
704 transform: translateX(-50%) translateY(-2px) scale(1.01);
705}
706.timeline-deck .status .content.truncated ~ .card {
707 display: none;
708}
709.status .content .inner-content a:not(.mention, .has-url-text) {
710 color: var(--link-text-color);
711}
712.status
713 .content
714 .inner-content
715 a:not(.mention, .has-url-text):is(:hover, :focus) {
716 color: var(--text-color);
717 text-decoration-color: var(--link-color);
718}
719.status .content :is(.h-card, .mention) {
720 unicode-bidi: isolate;
721}
722.status .spoiler-content > *,
723.status .content .inner-content > * {
724 unicode-bidi: plaintext;
725}
726.status .content p {
727 /* 12px = 75% of 16px */
728 margin-block: min(0.75em, 12px);
729 white-space: pre-wrap;
730 tab-size: 2;
731 text-wrap: pretty;
732}
733.status-card .content p {
734 margin-block: min(0.25em, 4px);
735}
736.status .content p:first-child {
737 margin-block-start: 0;
738}
739.status .content p:last-child {
740 margin-block-end: 0;
741}
742.status .content blockquote {
743 margin-block: min(0.75em, 12px);
744 margin-inline: 0;
745 padding-block: 0;
746 padding-inline: 12px 0;
747 /* border-left: 4px solid var(--link-faded-color); */
748 position: relative;
749
750 &:before {
751 position: absolute;
752 content: '';
753 width: 3px;
754 background-color: var(--link-faded-color);
755 inset-block: 0;
756 inset-inline-start: 0;
757 border-radius: 9999px;
758 }
759}
760.status .content > :is(ul, ol),
761.status .content > div > :is(ul, ol) {
762 margin-block: min(0.75em, 12px);
763 margin-inline: 0;
764 padding-inline-start: 1.5em;
765}
766.status .content > :is(ul, ol) li > :is(ul, ol),
767.status .content > div > :is(ul, ol) li > :is(ul, ol) {
768 padding-inline-start: 1.5em;
769}
770.status .content ul {
771 list-style-type: disc;
772}
773.status .content :is(strong, b) {
774 font-weight: 600;
775}
776.status .content .invisible {
777 display: none;
778}
779.status .content .ellipsis::after {
780 content: '…';
781}
782.status.large .content:not(.content .content) {
783 font-size: 150%;
784 font-size: min(calc(100% + 50% / var(--content-text-weight)), 150%);
785}
786.status.large .poll,
787.status.large .actions {
788 font-size: 125%;
789 font-size: calc(100% + 25% / var(--content-text-weight));
790}
791
792/* MEDIA */
793
794.status .media-container {
795 margin-top: 8px;
796 display: grid;
797 grid-template-columns: 1fr 1fr;
798 grid-auto-rows: 1fr;
799 gap: 2px;
800 /* height: 160px; */
801 min-height: 88px;
802 height: auto;
803 max-height: max(160px, 33vh);
804}
805.status .media-container.media-eq1 {
806 display: flex;
807 /* min-height: 0 !important; */
808 max-height: none !important;
809}
810.status-carousel .status .media-container:not(.status-card .media-container) {
811 margin-inline: -16px;
812 max-width: calc(100% + 16px + 16px) !important;
813
814 figure:before {
815 content: '';
816 display: block;
817 /* padding (16px) - gap (4px) */
818 flex-basis: calc(16px - 4px);
819 }
820
821 figure figcaption {
822 padding-inline: 16px !important;
823 }
824
825 &:not(.media-figure-multiple .media-container) {
826 margin-bottom: -16px;
827
828 &.media-eq1:not(:has(figure)) {
829 text-align: center;
830 background-color: var(--img-bg-color);
831 }
832 }
833
834 .media {
835 --media-radius: 0;
836 --media-radius-inner: 0;
837 box-sizing: border-box;
838 }
839}
840.status:not(.large):not(.status-carousel .status)
841 .media-container.media-eq1:has([data-orientation='portrait']) {
842 width: 85%;
843 min-width: 160px;
844 max-height: 200px;
845}
846.status .media-container.media-gt2 {
847 /* height: 200px; */
848 max-height: max(200px, 40vh);
849}
850.status.medium
851 .content
852 ~ *
853 .media-container:not(.status-card .media-container):is(
854 .media-eq2,
855 .media-gt2
856 ),
857.status.medium
858 .content
859 ~ .media-container:not(.status-card .media-container):is(
860 .media-eq2,
861 .media-gt2
862 ) {
863 /* 50px = avatar size */
864 margin-left: calc(-1 * ((50px / 2)));
865 /*
866 outer padding = 16px
867 gap = 12px
868 so... 16 - 12 = 4
869 */
870 margin-right: -4px;
871}
872.status.large :is(.media-container, .media-container.media-gt2) {
873 height: auto;
874 /* min-height: 160px; */
875 max-height: 60vh;
876}
877.status .media-container .media {
878 box-sizing: content-box;
879 --media-border-width: 1px;
880 --media-radius: 16px;
881 --media-radius-inner: 4px;
882 border-radius: var(--media-radius);
883 overflow: hidden;
884 min-height: 80px;
885 border: var(--media-border-width) solid var(--outline-color);
886 vertical-align: top;
887
888 &:not(.media-audio) {
889 background-color: var(--average-color, var(--bg-faded-color));
890 background-clip: padding-box;
891 }
892}
893.status .media-container:not(.media-eq1) .media {
894 aspect-ratio: auto !important;
895}
896.status .media-container.media-eq1 {
897 width: auto !important;
898 max-width: 100%;
899 display: block;
900
901 figure {
902 margin: 0;
903 padding: 0;
904 display: flex;
905 flex-wrap: wrap;
906 /* align-items: flex-end; */
907 column-gap: 4px;
908
909 figcaption {
910 align-self: flex-end;
911 padding: 4px;
912 font-size: 90%;
913 color: var(--text-insignificant-color);
914 line-height: 1.2;
915 cursor: pointer;
916 white-space: pre-line;
917 flex-basis: 15em;
918 flex-grow: 1;
919 text-wrap: pretty;
920 }
921 }
922
923 &:hover figure figcaption {
924 color: var(--text-color);
925 }
926}
927.status .media-container.media-eq1 .media {
928 display: inline-block;
929 max-width: 100% !important;
930 min-width: 88px;
931 /* width: auto; */
932 min-height: 88px;
933 /* --maxAspectHeight: max(160px, 33vh);
934 --aspectWidth: calc(--width / --height * var(--maxAspectHeight)); */
935 width: min(var(--aspectWidth), var(--width), 100%);
936 max-height: min(var(--height), 33vh);
937}
938.status .media-container.media-eq1 .media[data-orientation='portrait'] {
939 /* width: auto;
940 height: min(var(--height), 45vh);
941 max-height: none; */
942 max-height: min(var(--height), 45vh);
943}
944.status.large .media-container.media-eq1 {
945 max-height: min(var(--height), 60vh);
946
947 .media-gif.media-contain {
948 border-radius: 2px;
949 }
950}
951.status.large
952 .media-container:not(.status-card .media-container).media-eq1
953 .media {
954 width: min(var(--width), 100%);
955 max-height: min(var(--height), 80vh);
956}
957/* .status.large .media-container.media-eq1 .media[data-orientation='portrait'] {
958 height: min(var(--height), 60vh);
959} */
960.status-carousel .status .media-container.media-eq1 .media {
961 width: min(var(--width), 100%);
962 height: auto;
963 max-height: 60vh;
964}
965.status.status-card .media-container.media-eq1 .media {
966 max-height: 160px;
967 width: auto;
968 max-width: min(var(--width), 100%);
969}
970/* Special media borders */
971.status .media-container.media-eq2 .media:first-of-type {
972 border-radius: var(--media-radius) var(--media-radius-inner)
973 var(--media-radius-inner) var(--media-radius);
974}
975.status .media-container.media-eq2 .media:last-of-type {
976 border-radius: var(--media-radius-inner) var(--media-radius)
977 var(--media-radius) var(--media-radius-inner);
978}
979.status .media-container.media-eq3 .media:first-of-type {
980 border-radius: var(--media-radius) var(--media-radius-inner)
981 var(--media-radius-inner) var(--media-radius);
982}
983.status .media-container.media-eq3 .media:nth-of-type(2) {
984 border-radius: var(--media-radius-inner) var(--media-radius)
985 var(--media-radius-inner) var(--media-radius-inner);
986}
987.status .media-container.media-eq3 .media:last-of-type {
988 border-radius: var(--media-radius-inner) var(--media-radius-inner)
989 var(--media-radius) var(--media-radius-inner);
990}
991.status .media-container.media-eq4 .media:first-of-type {
992 border-radius: var(--media-radius) var(--media-radius-inner)
993 var(--media-radius-inner) var(--media-radius-inner);
994}
995.status .media-container.media-eq4 .media:nth-of-type(2) {
996 border-radius: var(--media-radius-inner) var(--media-radius)
997 var(--media-radius-inner) var(--media-radius-inner);
998}
999.status .media-container.media-eq4 .media:nth-of-type(3) {
1000 border-radius: var(--media-radius-inner) var(--media-radius-inner)
1001 var(--media-radius-inner) var(--media-radius);
1002}
1003.status .media-container.media-eq4 .media:last-of-type {
1004 border-radius: var(--media-radius-inner) var(--media-radius-inner)
1005 var(--media-radius) var(--media-radius-inner);
1006}
1007.status .media:only-child {
1008 grid-area: span 2 / span 2;
1009}
1010.status:not(.large) .media:only-child {
1011 max-width: 480px;
1012}
1013.status.large .media-container:not(.media-eq1) .media:only-child {
1014 display: inline-block;
1015 min-width: 160px;
1016 min-height: 160px;
1017 width: fit-content;
1018}
1019.status .media:first-child:nth-last-child(3) {
1020 grid-area: span 2;
1021}
1022
1023.status:not(.large) .media-container.media-gt4 .media:last-child {
1024 position: relative;
1025}
1026.status:not(.large) .media-container.media-gt4 .media:last-child:after {
1027 content: '4+';
1028 position: absolute;
1029 inset: 0;
1030 display: flex;
1031 place-content: center;
1032 place-items: center;
1033 background-color: var(--bg-faded-blur-color);
1034}
1035
1036.status .media:is(:hover, :focus) {
1037 border-color: var(--outline-hover-color);
1038}
1039.status .media:active:not(:has(button:active)) {
1040 filter: brightness(0.8);
1041 transform: scale(0.99);
1042}
1043.status .media :is(img, video) {
1044 width: 100%;
1045 height: 100%;
1046 object-fit: cover;
1047 vertical-align: middle;
1048}
1049:is(.status, .media-post) .media {
1050 cursor: pointer;
1051
1052 &[data-has-alt] {
1053 position: relative;
1054
1055 .alt-badge {
1056 position: absolute;
1057 bottom: 8px;
1058 left: 8px;
1059
1060 &:before {
1061 content: '';
1062 position: absolute;
1063 inset: -12px;
1064 }
1065 }
1066 }
1067}
1068.status .media img:is(:hover, :focus),
1069a:focus-visible .status .media img {
1070 animation: position-object 5s ease-in-out 1s 5;
1071 animation-duration: var(--anim-duration, 5s);
1072}
1073body:has(#modal-container .carousel) .status .media img:hover {
1074 animation: none;
1075}
1076.status .media .video-container,
1077.status .media video {
1078 width: 100%;
1079 height: 100%;
1080 object-fit: scale-down;
1081 /* border-radius: calc(var(--media-radius) - var(--media-border-width)); */
1082 border-radius: inherit;
1083}
1084.status :is(.media-video, .media-audio, .media-gif) {
1085 position: relative;
1086 background-clip: padding-box;
1087}
1088:is(.status, .media-post) :is(.media-video, .media-audio) .media-play {
1089 pointer-events: none;
1090 width: 44px;
1091 height: 44px;
1092 position: absolute;
1093 left: 50%;
1094 top: 50%;
1095 transform: translate(-50%, -50%);
1096 color: var(--media-fg-color);
1097 background-color: var(--media-bg-color);
1098 box-shadow: inset 0 0 0 2px var(--media-outline-color);
1099 display: flex;
1100 place-content: center;
1101 place-items: center;
1102 border-radius: 70px;
1103 transition: transform 0.2s ease-in-out;
1104}
1105:is(.status, .media-post)
1106 :is(.media-video, .media-audio):hover:not(:active)
1107 .media-play {
1108 transform: translate(-50%, -50%) scale(1.1);
1109}
1110:is(.status, .media-post)
1111 :is(.media-video, .media-audio)[data-formatted-duration]:after {
1112 font-size: 12px;
1113 pointer-events: none;
1114 content: attr(data-formatted-duration);
1115 position: absolute;
1116 bottom: 8px;
1117 right: 8px;
1118 color: var(--media-fg-color);
1119 background-color: var(--media-bg-color);
1120 border: var(--hairline-width) solid var(--media-outline-color);
1121 border-radius: 4px;
1122 padding: 0 4px;
1123}
1124:is(.status, .media-post) .media-audio[data-formatted-duration]:after {
1125 content: '♬ ' attr(data-formatted-duration);
1126}
1127:is(.status, .media-post) .media-gif[data-label]:not(:hover):after {
1128 font-size: 12px;
1129 font-weight: bold;
1130 pointer-events: none;
1131 content: attr(data-label);
1132 position: absolute;
1133 bottom: 8px;
1134 right: 8px;
1135 color: var(--media-fg-color);
1136 background-color: var(--media-bg-color);
1137 border: var(--hairline-width) solid var(--media-outline-color);
1138 border-radius: 4px;
1139 padding: 0 4px;
1140}
1141.media-gif {
1142 position: relative;
1143
1144 &:before {
1145 content: '';
1146 position: absolute;
1147 top: auto !important;
1148 bottom: 0;
1149 left: 0;
1150 right: 0;
1151 height: 2px;
1152 background-color: var(--media-outline-color);
1153 transform: translateX(calc(var(--progress, 0%) - 100%));
1154 border-radius: 0 !important;
1155 border: 0 !important;
1156 border-right: 1px solid var(--media-fg-color) !important;
1157 transition: transform 0.15s linear;
1158 }
1159 &:before {
1160 height: 3px;
1161 }
1162}
1163.status .media-gif video {
1164 object-fit: cover;
1165 pointer-events: none;
1166}
1167.status .media-contain {
1168 min-width: 160px;
1169 width: fit-content;
1170}
1171.status .media-contain video {
1172 object-fit: scale-down !important;
1173}
1174.status .media-eq1 .media-hover-animate {
1175 transition: border-radius 0.15s ease-out;
1176 transition-delay: 0.15s;
1177
1178 &:hover {
1179 transition-delay: 0;
1180 border-radius: 2px;
1181 }
1182}
1183/* .status .media-audio {
1184 border: 0;
1185 min-height: 0;
1186}
1187.status .media-audio audio {
1188 width: 100%;
1189} */
1190:is(.status, .media-post) .media-audio {
1191 width: 100%;
1192 height: 100%;
1193 min-height: 88px;
1194 background-image: radial-gradient(
1195 circle at center center,
1196 transparent,
1197 var(--bg-faded-color)
1198 ),
1199 repeating-radial-gradient(
1200 circle at center center,
1201 transparent,
1202 var(--bg-faded-color) 16px
1203 );
1204 background-blend-mode: multiply;
1205}
1206
1207.status:not(.large) .hashtag-stuffing {
1208 opacity: 0.75;
1209 transition: opacity 0.2s ease-in-out;
1210}
1211.status:not(.large) .hashtag-stuffing:is(:hover, :focus, :focus-within) {
1212 opacity: 1;
1213}
1214.status:not(.large) .hashtag-stuffing {
1215 white-space: nowrap;
1216 overflow: hidden;
1217 text-overflow: ellipsis;
1218 max-width: 100%;
1219
1220 /* Convert breaks to spaces */
1221 br {
1222 display: none;
1223
1224 + * {
1225 margin-left: 1ex;
1226 }
1227 }
1228}
1229.status:not(.large) .hashtag-stuffing:first-child {
1230 display: -webkit-box;
1231 -webkit-line-clamp: 3;
1232 -webkit-box-orient: vertical;
1233 white-space: normal;
1234}
1235
1236.media-figure-multiple {
1237 margin: 0;
1238 padding: 0;
1239
1240 figcaption {
1241 padding: 4px;
1242 font-size: 90%;
1243 color: var(--text-insignificant-color);
1244 line-height: 1.2;
1245 white-space: nowrap;
1246 overflow: hidden;
1247 text-overflow: ellipsis;
1248
1249 & > * {
1250 white-space: nowrap;
1251 overflow: hidden;
1252 text-overflow: ellipsis;
1253
1254 &:hover {
1255 color: var(--text-color);
1256 cursor: pointer;
1257 }
1258
1259 &:only-child {
1260 white-space: pre-line;
1261 overflow: auto;
1262 text-overflow: unset;
1263 display: flex;
1264 gap: 4px;
1265 }
1266 }
1267
1268 sup {
1269 opacity: 0.75;
1270 font-variant-numeric: tabular-nums;
1271 flex-shrink: 0;
1272 }
1273 }
1274
1275 /* Only 4, for now. Would be better if this is a for loop */
1276 &:has(.media[data-has-alt]:nth-child(1):is(:hover, :focus))
1277 figcaption
1278 > div[data-caption-index~='1'],
1279 &:has(.media[data-has-alt]:nth-child(2):is(:hover, :focus))
1280 figcaption
1281 > div[data-caption-index~='2'],
1282 &:has(.media[data-has-alt]:nth-child(3):is(:hover, :focus))
1283 figcaption
1284 > div[data-caption-index~='3'],
1285 &:has(.media[data-has-alt]:nth-child(4):is(:hover, :focus))
1286 figcaption
1287 > div[data-caption-index~='4'] {
1288 color: var(--text-color);
1289 }
1290}
1291
1292.carousel-item {
1293 position: relative;
1294}
1295.carousel-item button.media-alt {
1296 position: absolute;
1297 --bottom: 16px;
1298 bottom: var(--bottom);
1299 bottom: calc(var(--bottom) + env(safe-area-inset-bottom));
1300 left: 16px;
1301 left: calc(16px + env(safe-area-inset-left));
1302 text-align: left;
1303 border-radius: 8px;
1304 color: var(--text-color);
1305 padding: 4px 8px;
1306 background-color: var(--bg-faded-color);
1307 border: 1px solid var(--outline-color);
1308 box-shadow: 0 4px 16px var(--drop-shadow-color);
1309 max-width: min(var(--main-width), calc(100% - 32px));
1310 display: flex;
1311 align-items: center;
1312 gap: 8px;
1313 font-size: 90%;
1314 z-index: 1;
1315 text-shadow: 0 var(--hairline-width) var(--bg-color);
1316 white-space: pre-line;
1317
1318 &:is(:hover, :focus) {
1319 mix-blend-mode: normal;
1320 }
1321}
1322.carousel-item button.media-alt .media-alt-desc {
1323 overflow: hidden;
1324 white-space: normal;
1325 display: -webkit-box;
1326 display: box;
1327 -webkit-box-orient: vertical;
1328 box-orient: vertical;
1329 -webkit-line-clamp: 2;
1330 line-clamp: 2;
1331 line-height: 1.4;
1332}
1333.carousel-item button.media-alt[hidden] {
1334 opacity: 0;
1335}
1336@media (hover: hover) {
1337 .carousel-item button.media-alt {
1338 opacity: 0;
1339 transform: translateY(var(--bottom)) scale(0.95);
1340 transition: all 0.2s ease-in-out;
1341 }
1342 .carousel-item:hover button.media-alt {
1343 opacity: 1;
1344 transform: translateY(0) scale(1);
1345 }
1346 .carousel-item button.media-alt[hidden] {
1347 opacity: 1;
1348 }
1349}
1350
1351/* CARD */
1352
1353.card {
1354 display: flex;
1355 margin-top: 8px;
1356 border-radius: 8px;
1357 border: 1px solid var(--outline-color);
1358 overflow: hidden;
1359 color: inherit;
1360 align-items: stretch;
1361 background-color: var(--bg-color);
1362 max-width: 480px;
1363 /* max-height: 160px; */
1364}
1365.status.large .card.large,
1366.status-carousel .content-container[data-content-text-weight='1'] .card.large {
1367 border-radius: 16px;
1368 flex-direction: column;
1369 max-height: none;
1370}
1371.card .card-image {
1372 flex-shrink: 0;
1373 width: 35%;
1374 position: relative;
1375 border-inline-end: 1px solid var(--outline-color);
1376 background-color: var(--average-color, var(--bg-faded-color));
1377 background-clip: padding-box;
1378}
1379.card .card-image img {
1380 position: absolute;
1381 width: 100%;
1382 height: 100%;
1383 object-fit: cover;
1384}
1385/* .card .image {
1386 width: 35%;
1387 height: auto;
1388 flex-grow: 1;
1389 border-inline-end: 1px solid var(--outline-color);
1390 object-fit: cover;
1391 aspect-ratio: 1 / 1;
1392} */
1393.status.large .card .card-image {
1394 aspect-ratio: 1 / 1;
1395}
1396.status.large .card.large .card-image,
1397.status-carousel
1398 .content-container[data-content-text-weight='1']
1399 .card.large
1400 .card-image {
1401 flex-grow: 1;
1402 aspect-ratio: 1.91 / 1;
1403 width: 100%;
1404 max-height: 40vh;
1405 border-inline-end: 0;
1406 border-block-end: 1px solid var(--outline-color);
1407}
1408.card:is(:hover, :focus) img,
1409a:focus-visible .card img {
1410 animation: position-object 5s ease-in-out 1s 5;
1411 animation-duration: var(--anim-duration, 5s);
1412}
1413.card p {
1414 margin: 0;
1415}
1416.card .meta-container {
1417 padding: 8px;
1418 min-width: 0;
1419 flex-grow: 1;
1420 align-self: center;
1421}
1422.status.large .card.large .meta-container,
1423.status-carousel
1424 .content-container[data-content-text-weight='1']
1425 .card.large
1426 .meta-container {
1427 align-self: flex-start;
1428 flex-grow: 0;
1429}
1430.card .title {
1431 line-height: 1.25;
1432 font-weight: normal;
1433 text-overflow: ellipsis;
1434 overflow: hidden;
1435 display: -webkit-box;
1436 display: box;
1437 -webkit-box-orient: vertical;
1438 box-orient: vertical;
1439 -webkit-line-clamp: 2;
1440 line-clamp: 2;
1441 text-wrap: balance;
1442}
1443.card .meta {
1444 font-size: smaller;
1445 opacity: 0.75;
1446 margin: 0;
1447 text-overflow: ellipsis;
1448 overflow: hidden;
1449 display: -webkit-box;
1450 display: box;
1451 -webkit-box-orient: vertical;
1452 box-orient: vertical;
1453 -webkit-line-clamp: 2;
1454 line-clamp: 2;
1455}
1456.card.no-image :is(.title, .meta) {
1457 -webkit-line-clamp: 3;
1458 line-clamp: 3;
1459}
1460.card .meta.domain {
1461 opacity: 1;
1462 color: var(--link-color);
1463 white-space: nowrap;
1464 text-overflow: ellipsis;
1465 overflow: hidden;
1466 display: block;
1467}
1468.card:visited .meta.domain {
1469 color: var(--link-visited-color);
1470}
1471.card .meta.domain * {
1472 vertical-align: middle;
1473}
1474a.card {
1475 text-decoration: none;
1476 transition: opacity 0.2s ease-in-out;
1477}
1478a.card:is(:hover, :focus) {
1479 border: 1px solid var(--link-color);
1480 box-shadow: 0 0 0 2px var(--link-faded-color);
1481}
1482a.card:is(:hover, :focus):visited {
1483 border-color: var(--link-visited-color);
1484}
1485.card.video {
1486 max-width: 320px;
1487 max-height: 320px;
1488}
1489.card.video iframe {
1490 width: 100%;
1491 height: 100%;
1492}
1493
1494/* POLLS */
1495
1496.poll {
1497 display: inline-block;
1498 transition: opacity 0.2s ease-in-out;
1499 margin-top: 8px;
1500 border-radius: 16px;
1501 border: 1px solid var(--outline-color);
1502 background-color: var(--bg-faded-color);
1503 background-image: linear-gradient(
1504 to bottom,
1505 var(--bg-color) 50%,
1506 var(--bg-faded-color)
1507 );
1508 overflow: hidden;
1509 box-shadow: inset 0 0 0 1px var(--bg-color);
1510 min-width: 50%;
1511}
1512.poll.loading {
1513 opacity: 0.5;
1514 pointer-events: none;
1515}
1516.poll.read-only {
1517 pointer-events: none;
1518}
1519.poll-options {
1520 display: flex;
1521 flex-direction: column;
1522 gap: 4px;
1523 padding: 4px;
1524}
1525.poll-option {
1526 padding: 4px 8px;
1527 display: flex;
1528 gap: 16px;
1529 justify-content: space-between;
1530 align-items: center;
1531 position: relative;
1532}
1533.poll-option > * {
1534 z-index: 1;
1535}
1536.poll-option:after {
1537 content: '';
1538 position: absolute;
1539 inset: 0;
1540 border-radius: 4px;
1541 background-color: var(--link-faded-color);
1542 opacity: 0;
1543 pointer-events: none;
1544 transition: all 0.2s ease-in-out;
1545 z-index: 0;
1546}
1547.poll-option:first-child:after {
1548 border-top-left-radius: 12px;
1549 border-top-right-radius: 12px;
1550}
1551.poll-option:hover:after {
1552 opacity: 1;
1553}
1554.poll-option.poll-result:after {
1555 width: var(--percentage);
1556 opacity: 1;
1557}
1558.poll-label {
1559 width: 100%;
1560 display: flex;
1561 gap: 8px;
1562 cursor: pointer;
1563 z-index: 1;
1564}
1565.poll-label input:is([type='radio'], [type='checkbox']) {
1566 flex-shrink: 0;
1567 margin: 3px;
1568}
1569.poll-option-votes {
1570 flex-shrink: 0;
1571 font-size: 90%;
1572 opacity: 0.75;
1573}
1574.poll-option-leading .poll-option-votes {
1575 font-weight: bold;
1576 opacity: 1;
1577}
1578.poll-vote-button {
1579 margin: 8px 8px 0 12px;
1580 /* padding-inline: 24px; */
1581 min-width: 160px;
1582}
1583.poll-meta {
1584 color: var(--text-insignificant-color);
1585 margin: 8px 16px;
1586 font-size: 90%;
1587 user-select: none;
1588}
1589.poll-option-title {
1590 text-shadow: 0 1px var(--bg-color);
1591}
1592.poll-option-title .icon {
1593 vertical-align: middle;
1594}
1595
1596/* EXTRA META */
1597
1598.status .extra-meta {
1599 padding-top: 8px;
1600 color: var(--text-insignificant-color);
1601 font-size: 90%;
1602}
1603.status .extra-meta * {
1604 vertical-align: middle;
1605}
1606.status .extra-meta a {
1607 color: inherit;
1608 text-decoration: none;
1609 vertical-align: baseline;
1610 text-decoration-thickness: 1px;
1611 text-underline-offset: 3px;
1612}
1613.status .extra-meta a:is(:hover, :focus) {
1614 text-decoration: underline;
1615}
1616.status .extra-meta .edited:is(:hover, :focus) {
1617 cursor: pointer;
1618 color: var(--text-color);
1619}
1620.status.large .extra-meta {
1621 padding-top: 0;
1622 margin-left: calc(-50px - 16px);
1623}
1624
1625/* ACTIONS */
1626
1627.status .actions {
1628 display: flex;
1629 gap: 8px;
1630}
1631.status.large .actions {
1632 padding-top: 4px;
1633 padding-bottom: 16px;
1634 margin-left: calc(-50px - 16px);
1635 color: var(--text-insignificant-color);
1636 border-top: var(--hairline-width) solid var(--outline-color);
1637 margin-top: 8px;
1638}
1639.status.large .actions.disabled {
1640 pointer-events: none;
1641 opacity: 0.5;
1642}
1643.status .action.has-count {
1644 flex: 1;
1645}
1646.status .action > button {
1647 min-height: 40px;
1648 min-width: 40px;
1649 padding: 0 8px;
1650 font-variant-numeric: tabular-nums;
1651}
1652.status .action > button.plain {
1653 color: inherit;
1654 border: 1.5px solid transparent;
1655 backdrop-filter: none;
1656}
1657.status .action > button.plain:not(:disabled):is(:hover, :focus) {
1658 color: var(--link-color);
1659 background-color: var(--button-plain-bg-hover-color);
1660}
1661.status .action > button.plain.reblog-button:not(:disabled):is(:hover, :focus) {
1662 color: var(--reblog-color);
1663}
1664.status .action > button.plain.reblog-button.checked {
1665 color: var(--reblog-color);
1666 border-color: var(--reblog-color);
1667}
1668@keyframes reblogged {
1669 5% {
1670 transform: translate(-2px, -2px);
1671 }
1672 10% {
1673 transform: translate(2px, 2px);
1674 }
1675 15% {
1676 transform: translate(0, 0);
1677 }
1678 100% {
1679 transform: translate(30px, -30px);
1680 opacity: 0;
1681 }
1682}
1683.status .action > button.plain.reblog-button.checked .icon {
1684 animation: reblogged 1s ease-in-out;
1685}
1686.status .action > button.plain.favourite-button:is(:hover, :focus) {
1687 color: var(--favourite-color);
1688}
1689.status .action > button.plain.favourite-button.checked {
1690 color: var(--favourite-color);
1691 border-color: var(--favourite-color);
1692}
1693@keyframes hearted {
1694 15% {
1695 transform: scale(1.25) translateY(-1px);
1696 }
1697 30% {
1698 transform: scale(1);
1699 }
1700 45% {
1701 transform: scale(1.5) translateY(-2px);
1702 }
1703 100% {
1704 transform: scale(1);
1705 }
1706}
1707.status .action > button.plain.favourite-button.checked .icon {
1708 animation: hearted 1s ease-out;
1709}
1710.status .action > button.plain.bookmark-button.checked {
1711 color: var(--link-color);
1712 border-color: var(--link-color);
1713}
1714@keyframes bookmarked {
1715 25% {
1716 transform: translateY(-10px) rotate(10deg);
1717 opacity: 0.5;
1718 }
1719 50% {
1720 transform: translateY(0);
1721 opacity: 1;
1722 }
1723 75% {
1724 transform: translateY(-15px) rotate(-10deg);
1725 opacity: 0.5;
1726 }
1727 100% {
1728 transform: translateY(0);
1729 opacity: 1;
1730 }
1731}
1732.status .action > button.plain.bookmark-button.checked .icon {
1733 animation: bookmarked 1s ease-in-out;
1734}
1735
1736/* ENHANCED CONTENT */
1737
1738.status .content pre {
1739 border-radius: 8px;
1740 padding: 8px;
1741 margin: 8px 0;
1742 overflow: auto;
1743 width: 100%;
1744 border: 1px solid var(--outline-color);
1745 background: linear-gradient(
1746 to bottom right,
1747 var(--bg-faded-color),
1748 transparent 160px
1749 );
1750 white-space: pre-wrap;
1751 line-height: 1.2;
1752}
1753
1754.status .content p code {
1755 color: var(--green-color);
1756}
1757
1758/* BADGE */
1759
1760.status-badge {
1761 position: absolute;
1762 top: 4px;
1763 right: 4px;
1764 line-height: 0;
1765 pointer-events: none;
1766 opacity: 0.75;
1767}
1768.status-badge .favourite {
1769 color: var(--favourite-color);
1770}
1771.status-badge .reblog {
1772 color: var(--reblog-color);
1773}
1774.status-badge .bookmark {
1775 color: var(--link-color);
1776}
1777.status-badge .pin {
1778 color: var(--red-color);
1779}
1780@keyframes swoosh-from-right {
1781 0% {
1782 opacity: 0;
1783 transform: translateX(300%);
1784 }
1785 100% {
1786 opacity: 1;
1787 transform: translateX(0);
1788 }
1789}
1790.status-badge > * {
1791 animation: swoosh-from-right 1s cubic-bezier(0.51, 0.28, 0.16, 1.26) both;
1792}
1793.status-badge > *:nth-child(2) {
1794 animation-delay: 0.1s;
1795}
1796.status-badge > *:nth-child(3) {
1797 animation-delay: 0.2s;
1798}
1799.status-badge > *:nth-child(4) {
1800 animation-delay: 0.3s;
1801}
1802
1803/* MISC */
1804
1805.status-aside {
1806 padding: 0 16px 16px 80px;
1807 color: var(--text-insignificant-color);
1808}
1809
1810.shortcode-emoji {
1811 width: auto;
1812 min-width: 1.2em;
1813 max-width: 100%;
1814 height: 1.2em;
1815 vertical-align: text-bottom;
1816 object-fit: cover;
1817 object-position: left;
1818}
1819
1820/* EDIT HISTORY */
1821
1822#edit-history {
1823 min-height: 50vh;
1824 min-height: 50dvh;
1825}
1826
1827#edit-history h2 {
1828 margin: 0;
1829 padding: 0;
1830}
1831
1832#edit-history ol,
1833#edit-history ol li {
1834 list-style: none;
1835 margin: 0;
1836 padding: 0;
1837}
1838
1839#edit-history .history-item .status {
1840 border: 1px solid var(--outline-color);
1841 border-radius: 8px;
1842 pointer-events: none;
1843}
1844
1845/* DELETED */
1846
1847.status-deleted {
1848 opacity: 0.75;
1849}
1850.status-deleted-tag {
1851 color: var(--text-insignificant-color);
1852 text-transform: uppercase;
1853 font-size: 80%;
1854}
1855
1856/* FILTERED */
1857
1858#filtered-status-peek {
1859 user-select: none;
1860 -webkit-touch-callout: none;
1861 -webkit-user-drag: none;
1862}
1863
1864#filtered-status-peek main > p:first-child {
1865 margin-top: 0;
1866}
1867
1868#filtered-status-peek main .heading {
1869 white-space: nowrap;
1870 overflow: hidden;
1871 text-overflow: ellipsis;
1872}
1873
1874#filtered-status-peek {
1875 .status-link {
1876 margin: 8px 0 0;
1877 border-radius: 16px;
1878 border: var(--hairline-width) solid var(--divider-color);
1879 position: relative;
1880 max-height: 33vh;
1881 max-height: 33dvh;
1882 overflow: hidden;
1883
1884 &.truncated {
1885 .status {
1886 mask-image: linear-gradient(to bottom, #000 80px, transparent);
1887 }
1888
1889 &:after {
1890 content: attr(data-read-more);
1891 line-height: 1;
1892 display: inline-block;
1893 position: absolute;
1894 --inset-offset: 16px;
1895 inset-block-end: var(--inset-offset);
1896 inset-inline-end: var(--inset-offset);
1897 color: var(--text-color);
1898 background-color: var(--bg-faded-color);
1899 border: 1px dashed var(--link-color);
1900 box-shadow: 0 0 0 1px var(--bg-color), 0 -5px 10px var(--bg-color),
1901 0 -5px 15px var(--bg-color), 0 -5px 20px var(--bg-color);
1902 padding: 0.5em 0.75em;
1903 border-radius: 10em;
1904 font-size: 90%;
1905 white-space: nowrap;
1906 transition: transform 0.2s ease-out;
1907 }
1908
1909 &:is(:hover, :focus):after {
1910 color: var(--link-color);
1911 transform: translate(2px, 0);
1912 }
1913 }
1914
1915 .status {
1916 pointer-events: none;
1917 font-size: 90%;
1918 }
1919 }
1920}
1921
1922/* REACTIONS */
1923
1924#reactions-container main ul {
1925 list-style: none;
1926 margin: 0;
1927 padding: 8px 0;
1928 display: flex;
1929 flex-wrap: wrap;
1930 flex-direction: row;
1931 column-gap: 1.5em;
1932 row-gap: 16px;
1933}
1934#reactions-container main ul li {
1935 display: flex;
1936 flex-grow: 1;
1937 flex-basis: 16em;
1938 align-items: center;
1939 margin: 0;
1940 padding: 0;
1941 gap: 8px;
1942}
1943#reactions-container main ul li .account-block-acct {
1944 font-size: 80%;
1945 color: var(--text-insignificant-color);
1946 display: block;
1947}
1948#reactions-container .reactions-block {
1949 display: flex;
1950 flex-direction: column;
1951 align-self: center;
1952}
1953#reactions-container .reactions-block .favourite-icon {
1954 color: var(--favourite-color);
1955}
1956#reactions-container .reactions-block .reblog-icon {
1957 color: var(--reblog-color);
1958}
1959
1960/* ALT BADGE */
1961
1962.alt-badge {
1963 font-size: 12px;
1964 font-weight: bold;
1965 color: var(--media-fg-color);
1966 background-color: var(--media-bg-color);
1967 border: var(--hairline-width) solid var(--media-outline-color);
1968 /* mix-blend-mode: luminosity; */
1969 border-radius: 4px;
1970 padding: 4px;
1971 opacity: 0.65;
1972
1973 sup {
1974 vertical-align: super;
1975 font-weight: normal;
1976 line-height: 0;
1977 padding-left: 2px;
1978 }
1979
1980 &.clickable {
1981 opacity: 0.75;
1982 border-width: 2px;
1983
1984 &:is(:hover, :focus):not(:active) {
1985 transition: 0.15s ease-out;
1986 transition-property: transform, opacity, mix-blend-mode;
1987 transform: scale(1.15);
1988 opacity: 0.9;
1989 mix-blend-mode: normal;
1990 }
1991 }
1992}