ATProto Social Bookmark
at main 71 lines 1.3 kB view raw
1$mantine-breakpoint-xs: 36em; 2$mantine-breakpoint-sm: 48em; 3$mantine-breakpoint-md: 62em; 4$mantine-breakpoint-lg: 75em; 5$mantine-breakpoint-xl: 88em; 6 7.wrapper { 8 padding-top: var(--mantine-spacing-xl); 9 padding-bottom: calc(var(--mantine-spacing-xl) * 1); 10} 11 12.title { 13 font-family: Outfit, var(--mantine-font-family); 14 font-weight: 500; 15 margin-bottom: var(--mantine-spacing-md); 16 text-align: center; 17 animation: fadeInDown 0.6s ease-out both; 18 19 @media (max-width: $mantine-breakpoint-sm) { 20 font-size: 28px; 21 text-align: left; 22 } 23} 24 25.description { 26 text-align: center; 27 animation: fadeInDown 0.6s ease-out 0.15s both; 28 29 @media (max-width: $mantine-breakpoint-sm) { 30 text-align: left; 31 } 32} 33 34// ===== Feature card animation ===== 35.featureItem { 36 animation: featureAppear 0.5s ease-out both; 37} 38 39@for $i from 1 through 8 { 40 .featureItem:nth-child(#{$i}) { 41 animation-delay: #{0.2 + $i * 0.08}s; 42 } 43} 44 45@keyframes fadeInDown { 46 from { 47 opacity: 0; 48 filter: blur(4px); 49 transform: translateY(-10px); 50 } 51 52 to { 53 opacity: 1; 54 filter: blur(0); 55 transform: translateY(0); 56 } 57} 58 59@keyframes featureAppear { 60 from { 61 opacity: 0; 62 filter: blur(4px); 63 transform: translateY(16px) scale(0.98); 64 } 65 66 to { 67 opacity: 1; 68 filter: blur(0); 69 transform: translateY(0) scale(1); 70 } 71}