Files
mastodon/app/javascript/flavours/glitch/features/annual_report/index.module.scss
2025-12-10 18:13:17 +01:00

319 lines
5.5 KiB
SCSS

$mobile-breakpoint: 540px;
@font-face {
font-family: silkscreen-wrapstodon;
src: url('@/fonts/silkscreen-wrapstodon/silkscreen-regular.woff2')
format('woff2');
font-weight: normal;
font-display: swap;
font-style: normal;
}
.modalWrapper {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
padding: 40px;
overflow-y: auto;
pointer-events: none;
scrollbar-color: var(--color-text-secondary) var(--color-bg-secondary);
@media (width < $mobile-breakpoint) {
padding-inline: 10px;
}
.loading-indicator .circular-progress {
color: var(--lime);
}
}
.closeButton {
--default-icon-color: var(--color-bg-primary);
--default-bg-color: var(--color-text-primary);
--hover-icon-color: var(--color-bg-primary);
--hover-bg-color: var(--color-text-primary);
--corner-distance: 18px;
position: absolute;
top: var(--corner-distance);
right: var(--corner-distance);
padding: 8px;
border-radius: 100%;
@media (width < $mobile-breakpoint) {
--corner-distance: 16px;
padding: 4px;
}
}
.wrapper {
position: relative;
max-width: 600px;
padding: 24px;
contain: layout;
flex: 0 0 auto;
pointer-events: auto;
color: var(--color-text-primary);
background: var(--color-bg-primary);
background:
radial-gradient(at 40% 87%, #240c9a99 0, transparent 50%),
radial-gradient(at 19% 10%, #6b0c9a99 0, transparent 50%),
radial-gradient(at 90% 27%, #9a0c8299 0, transparent 50%),
radial-gradient(at 16% 95%, #1e948299 0, transparent 50%),
radial-gradient(at 80% 91%, #16dae499 0, transparent 50%)
var(--color-bg-primary);
border-radius: 40px;
@media (width < $mobile-breakpoint) {
padding-inline: 12px;
padding-bottom: 12px;
border-radius: 28px;
}
&::after {
content: '';
position: absolute;
inset: 0;
z-index: -1;
background: inherit;
border-radius: inherit;
filter: blur(20px);
}
}
.header {
margin-bottom: 18px;
text-align: center;
h1 {
font-family: silkscreen-wrapstodon, monospace;
font-size: 28px;
line-height: 1;
margin-bottom: 8px;
padding-inline: 40px; // Prevent overlap with close button
@media (width < $mobile-breakpoint) {
font-size: 22px;
margin-bottom: 4px;
}
}
p {
font-size: 14px;
line-height: 1.5;
}
}
.stack {
--grid-spacing: 12px;
display: grid;
gap: var(--grid-spacing);
}
.box {
position: relative;
padding: 16px;
border-radius: 16px;
background: rgb(from var(--color-bg-primary) r g b / 60%);
box-shadow: inset 0 0 0 1px rgb(from var(--color-text-primary) r g b / 40%);
&::before,
&::after {
content: '';
position: absolute;
inset-inline: 0;
display: block;
height: 1px;
background-image: linear-gradient(
to right,
transparent,
white,
transparent
);
}
&::before {
top: 0;
}
&::after {
bottom: 0;
}
}
.content {
display: flex;
flex-direction: column;
justify-content: center;
gap: 8px;
padding: 16px;
font-size: 14px;
text-align: center;
text-wrap: balance;
&.comfortable {
gap: 12px;
}
}
.title {
text-transform: uppercase;
color: #c2c8ff;
font-weight: 500;
}
.statLarge {
font-size: 24px;
font-weight: 500;
overflow-wrap: break-word;
}
.statExtraLarge {
font-size: 32px;
font-weight: 500;
line-height: 1;
overflow-wrap: break-word;
@media (width < $mobile-breakpoint) {
font-size: 24px;
}
}
.mostBoostedPost {
padding: 0;
padding-top: 8px;
overflow: hidden;
}
.statsGrid {
display: grid;
gap: var(--grid-spacing);
grid-template-columns: 1fr 2fr;
grid-template-areas:
'followers hashtag'
'new-posts hashtag';
@media (width < $mobile-breakpoint) {
grid-template-columns: 1fr 1fr;
grid-template-areas:
'followers new-posts'
'hashtag hashtag';
}
&:empty {
display: none;
}
&.onlyHashtag {
grid-template-columns: 1fr;
grid-template-areas: 'hashtag';
}
&.noHashtag {
grid-template-columns: 1fr 1fr;
grid-template-areas: 'followers new-posts';
}
&.singleNumber {
grid-template-columns: 1fr 2fr;
grid-template-areas: 'number hashtag';
@media (width < $mobile-breakpoint) {
grid-template-areas:
'number number'
'hashtag hashtag';
}
}
&.singleNumber.noHashtag {
grid-template-columns: 1fr;
grid-template-areas: 'number';
}
}
.followers {
grid-area: followers;
.singleNumber & {
grid-area: number;
}
}
.newPosts {
grid-area: new-posts;
.singleNumber & {
grid-area: number;
}
}
.mostUsedHashtag {
grid-area: hashtag;
padding-block: 24px;
}
.archetype {
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
p {
max-width: 460px;
}
}
.archetypeArtboard {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
align-self: center;
width: 180px;
padding-top: 40px;
}
.archetypeAvatar {
position: absolute;
top: 7px;
left: 4px;
border-radius: 100%;
overflow: hidden;
}
.archetypeIllustrationWrapper {
position: relative;
width: 92px;
aspect-ratio: 1;
overflow: hidden;
border-radius: 100%;
&::after {
content: '';
display: block;
position: absolute;
inset: 0;
border-radius: inherit;
box-shadow: inset -10px -4px 15px #00000080;
}
}
.archetypeIllustration {
width: 100%;
}
.blurredImage {
filter: blur(10px);
}
.archetypePlanetRing {
position: absolute;
top: 0;
left: 0;
mix-blend-mode: screen;
}