mirror of
https://git.shipoclu.com/moon/plspace.git
synced 2026-08-13 02:42:30 +00:00
370 lines
5.3 KiB
CSS
370 lines
5.3 KiB
CSS
/*
|
|
* MFM presentation ported from Pleroma-FE RichContent at
|
|
* 38317bee99fbc9d680334eae5dcc33a37bb9777f.
|
|
*/
|
|
|
|
.rich-text {
|
|
--emoji-size: var(--ms-emoji-size);
|
|
}
|
|
|
|
.rich-text .mfm {
|
|
display: inline-block;
|
|
}
|
|
|
|
.rich-text .mfm.-scale {
|
|
font-size: calc(var(--emoji-size) / 2);
|
|
}
|
|
|
|
.rich-text .mfm:not(.-scale) {
|
|
--emoji-size: 2em;
|
|
}
|
|
|
|
.rich-text .mfm.-pause {
|
|
animation-play-state: paused;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='x2'] {
|
|
font-size: 300%;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='x3'] {
|
|
font-size: 400%;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='x4'] {
|
|
font-size: 600%;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='sparkle'] {
|
|
position: relative;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='sparkle']::before,
|
|
.rich-text .mfm[data-mfm-operator='sparkle']::after {
|
|
content: '✨';
|
|
position: absolute;
|
|
opacity: 0.4;
|
|
z-index: -1;
|
|
animation-name: cheap-sparkle;
|
|
animation-duration: 1s;
|
|
animation-timing-function: ease-in-out;
|
|
animation-iteration-count: infinite;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='sparkle']::before {
|
|
left: 0;
|
|
animation-direction: alternate;
|
|
}
|
|
|
|
.rich-text .mfm[data-mfm-operator='sparkle']::after {
|
|
right: 0;
|
|
animation-direction: alternate-reverse;
|
|
}
|
|
|
|
.rich-text .mfm .custom-emoji {
|
|
/* Misskey's emoji width knows no bounds. */
|
|
max-width: unset !important;
|
|
}
|
|
|
|
.rich-text:hover .mfm {
|
|
animation-play-state: running;
|
|
}
|
|
|
|
@keyframes mfm-spin {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-spinX {
|
|
0% {
|
|
transform: perspective(8em) rotateX(0);
|
|
}
|
|
|
|
100% {
|
|
transform: perspective(8em) rotateX(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-spinY {
|
|
0% {
|
|
transform: perspective(8em) rotateY(0);
|
|
}
|
|
|
|
100% {
|
|
transform: perspective(8em) rotateY(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-jump {
|
|
0% {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
25% {
|
|
transform: translateY(-1em);
|
|
}
|
|
|
|
50% {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
75% {
|
|
transform: translateY(-0.5em);
|
|
}
|
|
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-bounce {
|
|
0% {
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
|
|
25% {
|
|
transform: translateY(-16px) scale(1);
|
|
}
|
|
|
|
50% {
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
|
|
75% {
|
|
transform: translateY(0) scale(1.5, 0.75);
|
|
}
|
|
|
|
100% {
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-twitch {
|
|
0% {
|
|
transform: translate(7px, -2px);
|
|
}
|
|
|
|
5% {
|
|
transform: translate(-3px, 1px);
|
|
}
|
|
|
|
10% {
|
|
transform: translate(-7px, -1px);
|
|
}
|
|
|
|
15% {
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
20% {
|
|
transform: translate(-8px, 6px);
|
|
}
|
|
|
|
25% {
|
|
transform: translate(-4px, -3px);
|
|
}
|
|
|
|
30% {
|
|
transform: translate(-4px, -6px);
|
|
}
|
|
|
|
35% {
|
|
transform: translate(-8px, -8px);
|
|
}
|
|
|
|
40% {
|
|
transform: translate(4px, 6px);
|
|
}
|
|
|
|
45% {
|
|
transform: translate(-3px, 1px);
|
|
}
|
|
|
|
50% {
|
|
transform: translate(2px, -10px);
|
|
}
|
|
|
|
55% {
|
|
transform: translate(-7px);
|
|
}
|
|
|
|
60% {
|
|
transform: translate(-2px, 4px);
|
|
}
|
|
|
|
65% {
|
|
transform: translate(3px, -8px);
|
|
}
|
|
|
|
70% {
|
|
transform: translate(6px, 7px);
|
|
}
|
|
|
|
75% {
|
|
transform: translate(-7px, -2px);
|
|
}
|
|
|
|
80% {
|
|
transform: translate(-7px, -8px);
|
|
}
|
|
|
|
85% {
|
|
transform: translate(9px, 3px);
|
|
}
|
|
|
|
90% {
|
|
transform: translate(-3px, -2px);
|
|
}
|
|
|
|
95% {
|
|
transform: translate(-10px, 2px);
|
|
}
|
|
|
|
100% {
|
|
transform: translate(-2px, -6px);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-shake {
|
|
0% {
|
|
transform: translate(-3px, -1px) rotate(-8deg);
|
|
}
|
|
|
|
5% {
|
|
transform: translateY(-1px) rotate(-10deg);
|
|
}
|
|
|
|
10% {
|
|
transform: translate(1px, -3px) rotate(0);
|
|
}
|
|
|
|
15% {
|
|
transform: translate(1px, 1px) rotate(11deg);
|
|
}
|
|
|
|
20% {
|
|
transform: translate(-2px, 1px) rotate(1deg);
|
|
}
|
|
|
|
25% {
|
|
transform: translate(-1px, -2px) rotate(-2deg);
|
|
}
|
|
|
|
30% {
|
|
transform: translate(-1px, 2px) rotate(-3deg);
|
|
}
|
|
|
|
35% {
|
|
transform: translate(2px, 1px) rotate(6deg);
|
|
}
|
|
|
|
40% {
|
|
transform: translate(-2px, -3px) rotate(-9deg);
|
|
}
|
|
|
|
45% {
|
|
transform: translateY(-1px) rotate(-12deg);
|
|
}
|
|
|
|
50% {
|
|
transform: translate(1px, 2px) rotate(10deg);
|
|
}
|
|
|
|
55% {
|
|
transform: translateY(-3px) rotate(8deg);
|
|
}
|
|
|
|
60% {
|
|
transform: translate(1px, -1px) rotate(8deg);
|
|
}
|
|
|
|
65% {
|
|
transform: translateY(-1px) rotate(-7deg);
|
|
}
|
|
|
|
70% {
|
|
transform: translate(-1px, -3px) rotate(6deg);
|
|
}
|
|
|
|
75% {
|
|
transform: translateY(-2px) rotate(4deg);
|
|
}
|
|
|
|
80% {
|
|
transform: translate(-2px, -1px) rotate(3deg);
|
|
}
|
|
|
|
85% {
|
|
transform: translate(1px, -3px) rotate(-10deg);
|
|
}
|
|
|
|
90% {
|
|
transform: translate(1px) rotate(3deg);
|
|
}
|
|
|
|
95% {
|
|
transform: translate(-2px) rotate(-3deg);
|
|
}
|
|
|
|
100% {
|
|
transform: translate(2px, 1px) rotate(2deg);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-rubberBand {
|
|
0% {
|
|
transform: scale(1);
|
|
}
|
|
|
|
30% {
|
|
transform: scale(1.25, 0.75);
|
|
}
|
|
|
|
40% {
|
|
transform: scale(0.75, 1.25);
|
|
}
|
|
|
|
50% {
|
|
transform: scale(1.15, 0.85);
|
|
}
|
|
|
|
65% {
|
|
transform: scale(0.95, 1.05);
|
|
}
|
|
|
|
75% {
|
|
transform: scale(1.05, 0.95);
|
|
}
|
|
|
|
100% {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes mfm-rainbow {
|
|
0% {
|
|
filter: hue-rotate() contrast(150%) saturate(150%);
|
|
}
|
|
|
|
100% {
|
|
filter: hue-rotate(360deg) contrast(150%) saturate(150%);
|
|
}
|
|
}
|
|
|
|
@keyframes cheap-sparkle {
|
|
0% {
|
|
filter: hue-rotate() contrast(150%) saturate(150%);
|
|
transform: translateY(-0.5em);
|
|
}
|
|
|
|
100% {
|
|
filter: hue-rotate(360deg) contrast(150%) saturate(150%);
|
|
transform: translateY(0.5em);
|
|
}
|
|
}
|